치환 암호표 복원

아직 제출이 없습니다시간 제한1초메모리 제한128 MB

문제

제26회 ACM/ICPC 문제를 출제하는 과학 위원회는 인터넷으로 문제 초안을 안전하게 주고받기 위해 다음과 같은 암호화 방식을 사용한다. 텍스트를 암호화할 때, 각 알파벳이 나타나는 모든 위치를 다른 알파벳(자기 자신일 수도 있음)으로 바꾼다. 단, 서로 다른 두 알파벳이 같은 알파벳으로 암호화되는 일은 없다. 즉, 이 치환은 26개의 대문자 알파벳에 대한 전단사(일대일 대응)이다. 원문과 암호문은 모두 대문자와 공백으로만 이루어지며, 공백은 암호화되지 않고 암호문에 그대로 복사된다. 예를 들어 표 $A \to Z,\ B \to Y,\ C \to X,\ \dots,\ Z \to A$ 에 따르면 문자열 THIS IS THE FIRST SAMPLEGSRH RH GSV URIHG HZNKOV 로 암호화된다.

어떤 수신자가 암호표를 잃어버렸지만, 문제에 등장할 수 있는 모든 단어가 들어 있는 사전을 가지고 있다. 암호문에서 원문을 복원할 수 있는 복호화 표를 세우도록 도와주자. 가능한 원래 단어들의 사전과 암호문이 주어질 때, 암호문을 복호화한 결과의 모든 단어가 사전에 등장하도록 하는 암호표를 찾아라.

입력

입력의 첫 부분은 모든 테스트 케이스가 공유하는 사전이다. 사전의 첫 줄에는 사전 단어의 수 $d$ ($1 \le d \le 50000$) 가 주어지고, 이어서 $d$ 개의 줄에 각각 한 단어씩 주어진다. 사전 단어는 사전순으로 정렬되어 있으며 모두 대문자이다. 각 단어의 길이는 최대 $20$ 이고, 모든 사전 단어의 길이 합은 최대 $350{,}000$ 이다.

그다음 줄에는 테스트 케이스의 수 $t$ ($1 \le t \le 10$) 가 하나의 정수로 주어진다. 각 테스트 케이스 앞에는 빈 줄이 하나 있고, 케이스는 암호문을 이루는 한 줄 이상으로 구성된다. 각 줄에는 대문자와 공백만 들어 있다. 한 단어가 줄바꿈으로 나뉘는 일은 없으며, 각 줄 끝에는 임의 개수의 공백이 있을 수 있다. 각 입력 줄의 길이는 최대 $80$ 이다.

출력

정확히 $t$ 줄을 출력한다. 각 줄은 하나의 테스트 케이스에 대응한다. 각 줄에는 $26$ 개의 대문자로 이루어진 문자열, 즉 해당 테스트 케이스에서 사용된 암호표에 따라 ABCDEFGHIJKLMNOPQRSTUVWXYZ 를 암호화한 결과를 출력한다 ($i$ 번째 위치는 알파벳의 $i$ 번째 글자가 암호화되는 글자이다). 어떤 글자는 복호화된 텍스트에 전혀 나타나지 않을 수 있다. 그런 글자의 위치에는 대신 * 를 출력한다. 유효한 암호표가 존재하지 않으면 #No solution# 을 출력한다. 가능한 암호표가 두 개 이상이면(즉, 복호화된 텍스트가 유일하게 결정되지 않으면) #More than one solution# 을 출력한다.