로나와 판은 평소 통신할 때 문장을 암호화하여 통신한다.
이들이 쓰는 암호 알고리즘은 매우 단순한 것으로 흔히 치환 암호법이라고 불린다.
좀 더 자세히 설명하자면 가지의 알파벳에 대해 치환되는 알파벳을 겹치지 않게 배치한 다음, 원래 문장에 있는 알파벳을 모두 치환하는 것이다.
가지 알파벳에 대해 이러한 규칙을 적어놓은 것을 치환표라고 부른다.
예를 들어, 원래 문장 “Hello, world!”가 있다고 하면 이를 “Dpqqr, arzqb!”로 치환할 수 있다. 이때 사용되는 치환 규칙은 [h → d], [e → p], [l → q], [o → r], [w → a], [r → z], [d → b]이며 등장하지 않은 다른 알파벳에 치환되는 알파벳은 확인할 수 없다.
원래 문장과 치환된 문장이 주어졌을 때, 가능한 알파벳 치환표의 가짓수를 출력한다.
아래 표는 위의 경우에서 가능한 치환표 중 한 가지이다. 치환표의 아랫 줄에 같은 알파벳이 두 번 등장하지 않음에 유의하라.
가능한 치환표가 하나도 없으면 을 출력한다.
첫 번째 줄에 암호화하기 이전의 원래 문장이 주어진다.
두 번째 줄에 암호화한 이후의 치환된 문장이 주어진다.
각 줄에 주어지는 문자열은 편의상 알파벳 대문자로만 이루어져 있으며, 길이는 최대 이다. 주어지는 두 문장의 길이는 같다.
로나와 판이 사용했다고 볼 수 있는 치환표의 가짓수를 출력한다. 단, 답이 매우 클 수 있으므로 ()로 나눈 나머지를 출력한다. 만약 가능한 치환표가 없는 경우 을 출력한다.
HELLOWORLD DPQQRARZQB
557316307
ABCDEFGHIJKLMNOPQRSTUVWXYZ LUSBPKMDEVTQCHRJFZYWNIAOXG
1
DOG AAB
0
입력 케이스들은 다음과 같은 종류로 구별되며, 한 종류의 케이스를 다 맞추어야 그 종류에 배정된 점수를 받을 수 있다.
종류 1: 37점
암호화하기 이전의 원래 문장에서는 모든 종류의 알파벳이 적어도 한 번은 등장한다.
종류 2: 63점
별다른 제약조건 없음.