숨겨진 암호
시간 제한2초메모리 제한512 MB
같은 키로 암호화된 여러 평문/암호문 쌍이 주어질 때, 가능한 가장 짧은 키를 복원하거나 불가능하면 Impossible을 출력한다.
문제
당신의 해킹 실력을 시험할 시간입니다! 당신은 전쟁 중인 적의 암호를 해독하는 임무를 맡았습니다. 다행히 적이 사용하는 암호화 기법을 알아냈는데, 방식은 아주 단순하며 다음과 같습니다. 모든 문자열은 알파벳 대문자로만 이루어져 있습니다.
- 키 와 평문 가 주어지고, 는 한 글자씩 암호화되어 같은 길이의 암호문 가 됩니다.
- 를 키 의 길이라고 하면, 의 처음 개 문자는 의 처음 개 문자에 의 각 문자를 더해서 얻습니다. 두 문자를 더한다는 것은 각 문자를 수로 해석하고(, , ...) 그 합을 26으로 나눈 나머지를 취하는 것입니다. 즉 에 대해 입니다. 만약 이면 의 남는 문자는 무시합니다.
- 의 나머지 문자들, 즉 인 는 앞서 만들어진 암호문 문자를 이용해 암호화됩니다. 에 대해 입니다.
예를 들어 문자열 "STANFORD"를 키 "ACM"으로 암호화하면 다음과 같습니다.
STA NFORD
+ ACM SVMFA
----------
SVM FAAWD
이제 적의 통신을 읽을 준비가 거의 끝났습니다. 다행히도 팀이 복구한 여러 쌍의 평문과 암호문이 있고, 이들은 모두 같은 키로 암호화되었다는 것이 알려져 있습니다. 적이 사용하는 키를 찾아 주세요. 키는 가장 긴 복구된 평문에 의해 유일하게 결정되므로, 가장 짧은 유효한 키는 유일합니다.
입력
입력은 여러 개의 테스트 케이스로 이루어집니다. 각 테스트 케이스는 정수 ()이 적힌 줄로 시작하며, 이는 주어지는 평문과 암호문 쌍의 개수입니다. 이어지는 개의 줄에는 각각 두 문자열 와 가 있으며, 각각 평문과 암호문입니다. 와 는 대문자(A-Z)로만 이루어지고 길이가 같으며(최대 100자), 입력은 인 줄로 끝나고 이 줄은 처리하지 않습니다.
출력
각 테스트 케이스마다, 가능한 가장 짧은 키를 한 줄에 출력합니다. 주어진 모든 암호화를 만들어낼 수 있는 키가 존재하지 않으면 Impossible을 출력합니다.