( 이 Math.SE 문제를 바탕으로 일부 그래픽도 제공함)
나는 다음과 같은 막대기를 가지고 있습니다.

나는 다음과 같이 보이기를 원합니다.

그러나 저는 전문 화가가 아니기 때문에 야심 찬 DIY 프로젝트를 시작하기 전에 머리가 아프지 않은지 확인하고 싶습니다.
이 스틱을 그리는 데 얼마나 많은 단계가 포함되어 있는지 프로그램에서 알려줍니다. 각 단계에는 단색의 페인트로 연속 영역을 페인트하는 작업이 포함됩니다. 위의 예에서는 왼쪽 절반을 파란색, 오른쪽 절반을 빨간색으로 칠한 다음 두 개의 별도 녹색 영역을 총 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
편집 : 테스트 케이스가 더 어려운 것으로 판명되면 테스트 케이스를 더 추가합니다.