암호 해독 (1214)

NYPC 2019 · 본선

로나와 판은 평소 통신할 때 문장을 암호화하여 통신한다.

이들이 쓰는 암호 알고리즘은 매우 단순한 것으로 흔히 치환 암호법이라고 불린다.

좀 더 자세히 설명하자면 2626가지의 알파벳에 대해 치환되는 알파벳을 겹치지 않게 배치한 다음, 원래 문장에 있는 알파벳을 모두 치환하는 것이다.

2626가지 알파벳에 대해 이러한 규칙을 적어놓은 것을 치환표라고 부른다.

예를 들어, 원래 문장 “Hello, world!”가 있다고 하면 이를 “Dpqqr, arzqb!”로 치환할 수 있다. 이때 사용되는 치환 규칙은 [h → d], [e → p], [l → q], [o → r], [w → a], [r → z], [d → b]이며 등장하지 않은 다른 알파벳에 치환되는 알파벳은 확인할 수 없다.

원래 문장과 치환된 문장이 주어졌을 때, 가능한 알파벳 치환표의 가짓수를 출력한다.

아래 표는 위의 경우에서 가능한 치환표 중 한 가지이다. 치환표의 아랫 줄에 같은 알파벳이 두 번 등장하지 않음에 유의하라.

<그림 1> 치환표 예시
<그림 1> 치환표 예시

가능한 치환표가 하나도 없으면 00을 출력한다.

입력 형식

첫 번째 줄에 암호화하기 이전의 원래 문장이 주어진다.

두 번째 줄에 암호화한 이후의 치환된 문장이 주어진다.

각 줄에 주어지는 문자열은 편의상 알파벳 대문자로만 이루어져 있으며, 길이는 최대 100100이다. 주어지는 두 문장의 길이는 같다.

출력 형식

로나와 판이 사용했다고 볼 수 있는 치환표의 가짓수를 출력한다. 단, 답이 매우 클 수 있으므로 10000000071\,000\,000\,007 (=109+7=10^9+7)로 나눈 나머지를 출력한다. 만약 가능한 치환표가 없는 경우 00을 출력한다.

예제 1

입력

HELLOWORLD DPQQRARZQB

출력

557316307

예제 2

입력

ABCDEFGHIJKLMNOPQRSTUVWXYZ LUSBPKMDEVTQCHRJFZYWNIAOXG

출력

1

예제 3

입력

DOG AAB

출력

0

채점 방식

입력 케이스들은 다음과 같은 종류로 구별되며, 한 종류의 케이스를 다 맞추어야 그 종류에 배정된 점수를 받을 수 있다.

종류 1: 37

암호화하기 이전의 원래 문장에서는 모든 종류의 알파벳이 적어도 한 번은 등장한다.

종류 2: 63

별다른 제약조건 없음.

해설