고대의 암호

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

문제

고대 로마 제국은 비밀 정보국을 비롯한 여러 부서를 갖춘 강력한 통치 체계를 갖추고 있었다. 중요한 문서는 도청을 막기 위해 지방과 수도 사이에서 암호화된 형태로 오갔다. 당시 가장 널리 쓰인 암호는 이른바 치환 암호(substitution cipher)순열 암호(permutation cipher) 였다.

치환 암호는 각 글자가 등장하는 모든 자리를 다른 어떤 글자로 바꾼다. 서로 다른 글자에 대응되는 치환 글자는 모두 달라야 하지만(즉 치환은 일대일 대응이다), 어떤 글자는 치환 결과가 원래 글자와 같을 수도 있다. 예를 들어 'A'부터 'Y'까지의 글자를 알파벳에서 바로 다음 글자로 바꾸고 'Z'는 'A'로 바꾸는 치환 암호를 메시지 "VICTORIOUS"에 적용하면 "WJDUPSJPVT"가 된다.

순열 암호는 메시지의 글자들에 어떤 순열을 적용한다. 예를 들어 순열 2,1,5,4,3,7,6,10,9,8\langle 2, 1, 5, 4, 3, 7, 6, 10, 9, 8 \rangle을 메시지 "VICTORIOUS"에 적용하면 "IVOTCIRSUO"가 된다.

두 암호를 따로 적용하면 각각은 상당히 약하다는 사실이 곧 드러났다. 그러나 둘을 결합하면 그 시대에는 충분히 강력했다. 그래서 가장 중요한 메시지는 먼저 치환 암호로 암호화한 뒤 그 결과를 다시 순열 암호로 암호화했다. 위에서 설명한 두 암호의 조합으로 "VICTORIOUS"를 암호화하면 "JWPUDJSTVP"가 된다.

최근 고고학자들이 돌판에 새겨진 메시지를 발견했다. 언뜻 보기에는 아무 의미가 없어 보여서, 이 메시지가 어떤 치환 암호와 순열 암호로 암호화된 것이라는 추측이 나왔다. 학자들은 암호화되기 전 원문이 무엇이었을지 추측했고, 이제 그 추측이 옳은지 확인하려 한다. 이를 위한 컴퓨터 프로그램이 필요하니, 여러분이 작성해야 한다.

입력

입력은 두 줄로 이루어진다. 첫 번째 줄에는 돌판에 새겨진 메시지가 주어진다. 암호화하기 전에 모든 공백과 문장 부호가 제거되었으므로, 암호화된 메시지는 영어 대문자만 포함한다. 두 번째 줄에는 첫 번째 줄의 메시지에 암호화되어 있다고 추측되는 원문이 주어지며, 이 역시 영어 대문자만 포함한다.

두 줄의 길이는 서로 같으며 100100을 넘지 않는다.

출력

첫 번째 줄의 메시지가 두 번째 줄의 메시지를 암호화한 결과일 수 있으면 "YES"를, 그렇지 않으면 "NO"를 출력한다.