(Na podstawie tego problemu Math.SE , który zapewnia również grafikę)
Mam patyk, który wygląda trochę tak:

Chcę, żeby wyglądało to tak:

Nie jestem jednak specjalistą od malowania, więc zanim rozpocznę tak ambitny projekt DIY, chcę się upewnić, że nie będę się nad tym zastanawiać.
Twój program powinien mi powiedzieć, ile kroków wymaga malowanie tego kija. Każdy krok polega na pomalowaniu ciągłego obszaru jednolitym kolorem, który zakrywa poprzednie warstwy farby. W powyższym przykładzie mogłem pomalować lewą połowę koloru niebieskiego, prawą połówkę koloru czerwonego, a następnie dwa osobne zielone obszary w sumie 4 kroki (kolor zielony nie jest stale malowany).

Oto w ASCII:
------
bbb---
bbbrrr
bgbrrr
bgbrgr
Istnieje kilka różnych sposobów na pomalowanie tego kija i uzyskanie tego samego rezultatu. Interesuje mnie jednak tylko szacunkowy czas, który składa się z czterech kroków.
Cel
Twój program powinien wypisać minimalną liczbę kroków potrzebnych do namalowania kija o danym schemacie kolorów. Schemat malowania będzie miał postać ciągu znaków, a wynikiem będzie liczba. To jest kod golfowy. Najkrótszy program wygrywa.
Wejście
Twój program otrzyma schemat kolorowania kija w postaci ciągu liter. Każda unikalna litera (wielkość liter ma znaczenie) reprezentuje unikalny kolor.
YRYGR
grG
GyRyGyG
pbgbrgrp
hyghgy
Wynik
Te liczby to najmniejsza liczba kroków potrzebnych do pomalowania patyczków.
4
3
4
5
4
Objaśnienia
Tak doszedłem do powyższych liczb. Twój program nie musi generować tego:
-----
YYY--
YRY--
YRYG-
YRYGR
---
g--
gr-
grG
-------
GGGGGGG
GyyyGGG
GyRyGGG
GyRyGyG
--------
pppppppp
pbbbpppp
pbbbrrrp
pbgbrrrp
pbgbrgrp
------
-yyyyy
-ygggy
hygggy
hyghgy
Edycja: Dodam więcej przypadków testowych, jeśli okażą się trudniejsze.