글을 암호화하는 간단하지만 안전하지 않은 방법 중 하나는 알파벳 글자들을 서로 뒤바꾸는 것이다. 즉, 원문에서 어떤 글자는 항상 정해진 다른 한 글자로 바뀐다. 복호화가 가능해야 하므로, 서로 다른 두 글자가 같은 글자로 바뀌는 일은 없다(치환은 소문자 26글자에 대한 일대일 대응이다).
이런 암호를 푸는 고전적인 방법으로 알려진 평문 공격(known-plaintext attack) 이 있다. 공격자는 평문을 이미 알고 있는 문장의 암호문을 손에 넣고, 암호문과 평문의 대응 관계로부터 치환 규칙을 알아낸다.
같은 치환 규칙으로 암호화된 여러 줄이 주어진다. 그중 한 줄은 다음 평문을 암호화한 것임이 알려져 있다.
the quick brown fox jumps over the lazy dog
이 문장은 알파벳 26글자를 모두 사용하는 팬그램(pangram)이므로, 이 문장과 그 암호문을 맞춰 보면 치환표 전체가 하나로 정해진다. 그 치환표를 이용해 입력의 모든 줄을 복호화하라.
입력은 여러 줄로 이루어진다. 암호화된 각 줄은 소문자와 공백만으로 이루어지며, 길이는 최대 80글자이다. 줄은 최대 100개이며, 입력은 파일 끝에서 끝난다.
각 입력 줄을, 알려진 평문에서 알아낸 치환표로 복호화하여 한 줄씩 출력하라. 평문이 팬그램이므로 치환표와 복호화 결과는 유일하게 정해진다.
어떤 줄도 알려진 평문의 암호문이 될 수 없어 일관된 치환표를 만들 수 없다면, 다음 한 줄만 출력하라.
No solution.