#abc475d. Alphametic Prime

Alphametic Prime

题目描述

给定一个由小写英文字母组成的字符串 SS。若存在满足下列条件的素数 PP,请求出其中一个。

条件:设 TTPP 的十进制表示(不带多余的前导 0)所对应的字符串。则 S=T|S| = |T|,且对所有满足 1i<jS1 \le i < j \le |S|i,ji, j,都有

Si=Sj    Ti=TjS_i = S_j \iff T_i = T_j

输入格式

S

输出格式

不存在满足条件的素数时,输出 -1

存在时,输出其中一个这样的素数。答案有多个时,输出任意一个都算正确。

输入示例 1

motor

输出示例 1

10607

示例 1 说明

S=motorS = \texttt{motor} 的「相同位置模式」是:第 22 位与第 44 位相同(都是 o),其余各位两两不同。

T=10607T = \texttt{10607} 正好符合:第 2244 位都是 0,而 1,6,71, 6, 7 两两不同、也都不等于 00。且 1060710607 是素数。

除此之外,输出 40709 等也算正确。但 81817 不满足条件——它的第 1133 位相同(都是 8),而 SS 的第 1133 位(mt)并不相同,所以会被判错。

注意条件是「充要」的:相同的字母必须对应相同的数字,不同的字母也必须对应不同的数字

输入示例 2

byebye

输出示例 2

-1

示例 2 说明

S=byebyeS = \texttt{byebye} 的模式是 XYZXYZ\texttt{XYZXYZ},于是 TT 必然形如 $\overline{xyzxyz} = \overline{xyz} \times 1001 = \overline{xyz} \times 7 \times 11 \times 13$。由于首位不能为 00xyz100\overline{xyz} \ge 100,所以这个数一定是合数,故无解。

输入示例 3

coconut

输出示例 3

1010237

示例 3 说明

S=7|S| = 7 是允许的最大长度,此时 TT77 位数。SS 中不同字母有 c, o, n, u, t55 个,需要给它们分配 55 个两两不同的数字。

输入示例 4

a

输出示例 4

2

示例 4 说明

S=1|S| = 1 是允许的最小长度,此时只需找一个一位素数即可,2,3,5,72, 3, 5, 7 都正确。这组数据用来检验长度为 11 的边界。

约束条件

  • SS 是长度在 1177 之间(含端点)、仅由小写英文字母组成的字符串