반복 게임
면접 대비시간 제한5초메모리 제한512 MB
같은 문자를 늘리거나 줄이는 연산만으로 N개 문자열을 똑같이 만드는 최소 이동 횟수를 구합니다.
문제
페글라와 오마르는 매일 게임을 한다. 그런데 알고 있는 게임에 모두 싫증이 나서 새 게임을 하나 만들었고, 이름을 "The Repeater"라고 붙였다.
두 사람이 하는 게임이다. 페글라가 문자열 개를 적으면, 오마르는 아래 두 가지 연산만 써서 문자열을 모두 똑같이 만들어야 한다. 연산 횟수는 최소여야 하며, 0번일 수도 있다.
- 어느 문자열에서든 문자 하나를 골라 그 문자와 같은 문자를 바로 뒤에 하나 더 붙인다. 예를 들어 "abc"에서 'b'를 골라 한 번에 "abbc"로 바꿀 수 있다.
- 어느 문자열에서든 서로 붙어 있는 같은 문자 두 개를 골라 그중 하나를 지운다. 예를 들어 "abbc"에서 'b' 하나를 지워 한 번에 "abc"로 바꿀 수 있다. 반면 "bbc"로는 바꿀 수 없다.
두 연산은 서로 독립이다. 첫 번째 연산 뒤에 두 번째 연산이 반드시 따라와야 하는 것은 아니고, 그 반대도 마찬가지다.
주어진 문자열을 모두 같게 만들 수 있는지 판정하고, 가능하다면 최소 연산 횟수를 구하는 프로그램을 작성해 오마르를 도와라.
입력
첫 줄에 테스트 케이스의 개수 가 주어진다. 이어서 테스트 케이스가 개 주어진다. 각 테스트 케이스의 첫 줄에는 문자열의 개수 이 주어지고, 다음 개의 줄에 문자열이 한 줄에 하나씩 주어진다. 각 문자열은 비어 있지 않고 알파벳 소문자 'a'부터 'z'로만 이루어져 있다.
제한
- 각 문자열의 길이는 1 이상 100 이하
출력
각 테스트 케이스마다 한 줄에 "Case #x: y" 형식으로 출력한다. 는 1부터 시작하는 테스트 케이스 번호이고, 는 문자열을 모두 같게 만드는 최소 연산 횟수다. 문자열을 모두 같게 만들 수 없다면 자리에 Fegla Won을 출력한다. 큰따옴표는 출력하지 않는다.