퍼즐 게임을 좋아하는 현욱이 오늘도 재미있는 퍼즐을 하나 찾아냈다. 플레이어는 빈 문자열 하나를 들고 시작하고, 문자열에 다음 세 가지 연산을 쓸 수 있다.
- A: 현재 문자열의 맨 뒤에 0을 붙인다.
- B: 현재 문자열의 맨 뒤에 1을 붙인다.
- C: 현재 문자열과 똑같은 문자열을 현재 문자열의 맨 뒤에 덧붙인다.
플레이어는 이 연산을 순서대로 이어 붙여 새 연산 F를 만들 수 있다. F는 사용한 연산을 순서대로 나열해 적는다. 예를 들어 F=BA는 주어진 문자열의 맨 뒤에 10을 덧붙이는 연산이다.
퍼즐에는 목표 문자열 S가 주어진다. 빈 문자열에 F를 두 번 적용한 결과가 S와 같아야 한다. 즉 빈 문자열에 F를 적용해 얻은 문자열에 F를 한 번 더 적용하면 S가 나와야 한다.
예를 들어 S가 100100이면 F=BAA가 조건을 만족한다. 빈 문자열에 BAA를 적용하면 100이 되고, 100에 BAA를 다시 적용하면 100100이 된다.
F의 길이, 즉 F에 쓴 연산의 개수가 적을수록 점수가 높다. 현욱을 도와 조건을 만족하는 가장 짧은 F의 길이를 구하자.