(このMath.SE問題に基づいて、グラフィックも提供します)
私はこのように見える棒を持っています:

私はそれをちょっとこのように見せたいです:

私は専門の画家ではありませんが、このような野心的なDIYプロジェクトを始める前に、頭の中にいないことを確認したいと思います。
あなたのプログラムは、このスティックをペイントするのにいくつのステップが必要かを教えてくれるはずです。各ステップでは、前のペイント層を覆う無地の連続領域をペイントします。上記の例では、左半分を青、右半分を赤、そして2つの別々の緑の領域を合計4ステップでペイントできます(緑は連続的にペイントされません)。

これはASCII形式です。
------
bbb---
bbbrrr
bgbrrr
bgbrgr
このスティックをペイントして同じ結果を得るには、いくつかの異なる方法があります。ただし、時間の見積もりにのみ興味があり、これは4つのステップです。
ゴール
プログラムは、指定された配色でスティックをペイントするために必要な最小ステップ数を出力する必要があります。ペイントスキームは文字列の形式になり、出力は数字になります。これはコードゴルフです。最短のプログラムが勝ちます。
入力
プログラムは、文字列の形でスティックの配色を受け取ります。一意の文字(大文字と小文字が区別されます)はそれぞれ、一意の色を表します。
YRYGR
grG
GyRyGyG
pbgbrgrp
hyghgy
出力
これらの数値は、スティックをペイントするのに必要な最小ステップ数です。
4
3
4
5
4
説明
これが私が上記の数字に到達した方法です。プログラムはこれを出力する必要はありません:
-----
YYY--
YRY--
YRYG-
YRYGR
---
g--
gr-
grG
-------
GGGGGGG
GyyyGGG
GyRyGGG
GyRyGyG
--------
pppppppp
pbbbpppp
pbbbrrrp
pbgbrrrp
pbgbrgrp
------
-yyyyy
-ygggy
hygggy
hyghgy
編集:テストケースがより難しいテストケースであることが判明した場合は、さらにテストケースを追加します。