6189: 凯撒解密
[Creator : ]
Description
凯撒加密,是一种简单且广为人知的加密技术。需要加密的信息称之为明文,加密后的信息称之为密文。凯撒加密是将明文中的字母都按照一个固定的数量进行偏移,偏移后的结果就是密文,我们也称这个偏移的数量为密钥,密钥值介于 11 至 2525 之间。
例如:当密钥为 33 时,表示每个字母往后偏移 33 个位置,即:
a \rightarrow d,b \rightarrow e,c \rightarrow f,\ldots,x \rightarrow a,y \rightarrow b,z \rightarrow ca→d,b→e,c→f,…,x→a,y→b,z→c 。
- 明文字母:a b c d e f g h i j k l m n o p q r s t u v w x y z
- 密文字母:d e f g h i j k l m n o p q r s t u v w x y z a b c
小爱现在得到了一串密文 ss,密文由一句句子组成,句子中的单词与单词之间由空格隔开,密文句结尾由换行符结束。但是粗心的他忘记了密钥是多少,他只记得原文中一定含有单词 tt。
请你根据小爱提供的信息,帮他计算出密钥可能的种数与所有可能的密钥值。
例如,小爱得到的密文为: wow my memory is php code yep,已知原文中出现了 iai 这个单词,则密钥有22种可能:
-
当密钥为 77 时,原文单词iai向后偏移7个字母可以得到php,在密文中有出现该单词
-
当密钥为1414时,原文单词iai向后偏移14个字母可以得到wow,在密文中有出现该单词
然而,当密钥为44时,iai向后偏移4个字母得到的mem,尽管mem是单词memory的前缀,但mem并不是独立的一整个单词,因此44并不是可能的密钥。
Input
输入共两行:
输入第一行:一个字符串TT,表示加密前的原文中包含单词TT,字符串TT为一个单词,字母之间无空格。
输入第二行:一个字符串SS,表示加密后的密文,单词与单词之间由空格隔开,行末以换行作为结束标志。
数据保证,输入的密文与原文单词,均仅由小写字母构成,不包含其他字符。
输入第一行:一个字符串TT,表示加密前的原文中包含单词TT,字符串TT为一个单词,字母之间无空格。
输入第二行:一个字符串SS,表示加密后的密文,单词与单词之间由空格隔开,行末以换行作为结束标志。
数据保证,输入的密文与原文单词,均仅由小写字母构成,不包含其他字符。
Output
输出第一行:一个正整数,表示可能的密钥种数。
输出第二行:若干个正整数,表示所有可能的密钥值,按字典序从小到大输出。
注意:若给定数据无法找到可行密钥,则在仅需第一行输出Error,无需输出第二行。
输出第二行:若干个正整数,表示所有可能的密钥值,按字典序从小到大输出。
注意:若给定数据无法找到可行密钥,则在仅需第一行输出Error,无需输出第二行。
Constraints
对于100\%100%的数据,1 \leq |S| \leq 1000,1 \leq |T| \leq 201≤∣S∣≤1000,1≤∣T∣≤20
式中,|S|∣S∣表示密文字符串长度,|T|∣T∣表示单词字符串长度
式中,|S|∣S∣表示密文字符串长度,|T|∣T∣表示单词字符串长度
Sample 1 Input
iai
wow my memory is php code yep
Sample 1 Output
2
7 14
Sample 2 Input
yacs
hello world
Sample 2 Output
Error