비밀번호가 없는 알파벳 배열

A부터 Z까지 한 줄로 배열할 때 주어진 비밀번호가 연속 구간으로 나타나지 않는 가장 사전 순으로 빠른 배열을 찾고 없으면 불가능함을 출력합니다.

보통6백트래킹문자열 매칭완전 탐색아직 제출이 없습니다시간 제한5초메모리 제한512 MB

문제

조카 안드레이에게 줄 나무 알파벳 세트를 샀다. A부터 Z까지 26개 글자가 하나씩 들어 있고, 상자가 길쭉해서 글자가 한 줄로 늘어서면 26글자짜리 메시지처럼 보인다.

나는 여러 온라인 계정에 서로 다른 비밀번호 NN개를 쓰고 있다. 한 줄로 늘어선 26글자 안에 그중 하나가 우연히 그대로 들어가 있을까 봐 걱정된다. 26개 글자를 각각 한 번씩만 써서 한 줄로 배열하되, 어떤 비밀번호도 연속된 부분 문자열로 나타나지 않게 만들 수 있는지 판단하자.

입력

첫 줄에 테스트 케이스의 개수 TT가 주어진다. 각 테스트 케이스는 두 줄이다. 첫 줄에 정수 NN이 주어지고, 둘째 줄에 서로 다른 비밀번호 P1,P2,,PNP_1, P_2, \ldots, P_N이 공백으로 구분되어 주어진다. 각 비밀번호는 알파벳 대문자로만 이루어진다.

제한

  • 1T1001 \le T \le 100
  • 1N261 \le N \le 26
  • 1Pi261 \le |P_i| \le 26
  • iji \ne j이면 PiPjP_i \ne P_j
  • 한 비밀번호 안에서 같은 글자가 여러 번 나올 수 있다.

출력

각 테스트 케이스마다 Case #x: y 형식으로 한 줄씩 출력한다. xx는 1부터 시작하는 테스트 케이스 번호다. yy는 알파벳 대문자 26개를 각각 한 번씩만 쓴 문자열이면서 어떤 비밀번호도 연속된 부분 문자열로 포함하지 않는 문자열이다. 그런 문자열이 여럿이면 사전순으로 가장 앞서는 것 하나만 출력한다. 조건을 만족하는 문자열이 하나도 없으면 yy 자리에 IMPOSSIBLE을 출력한다.