#2243. 徐老师的迭代加密

徐老师的迭代加密

题目描述

徐老师最近很喜欢和石老师玩通信加密,他们一起设计了一套很有趣的加密系统——迭代加密法

迭代加密法的核心是一个密钥字典,这个密钥字典中一共存储着 mm 个密钥

每个密钥的格式如下:

<word0> x <word1> <word2> <word3> ... <wordx>

意思就是 这个单词如果在密文中出现了,那么则将它替换成后面的 xx 个单词

例如密钥 ab 3 aa ac cc 的意思就是,如果密文中出现了 ab 这个单词(必须是完整的单词,包含 ab 的单词不算,即 aab,aaba等均不算)则替换成 aa ac cc

而迭代加密的重头戏,就和它的名字一样,密钥可能会出现迭代,例如一个密钥包含另一个密钥,那么则需要重复将其替换,来使得最终的密文中不包含任何密钥字典中的密钥

用伪代码来描述迭代加密如下:

while (密文中包含密钥字典中的密钥){
    按照密钥字典的规则替换所有出现的密钥
}

最终当密文中不包含密钥字典中的密钥时,破解完毕,此时的信息即为真正的信息也就是明文

现在徐老师给石老师传递了一个包含 nn 个单词的密文,徐老师想用这个密文考考石老师

他希望石老师不但要破译出明文,还要计算出明文里所有小写字母对应的 ASCIIASCII 码之和,而你的任务则是帮徐老师计算一下正确结果,以此来和石老师的结果进行比对

P.S. 'a'ASCIIASCII 码为 9797'b'ASCIIASCII 码为 9898,依次类推

输入格式

输入第一行包含一个整数 mm,表示密钥字典中的密钥数量

接下来 mm 行,每行包含一个密钥,格式如题意所示

接下来一行包含一个整数 nn,表示密文有 nn 个单词

下一行包含 nn 个由空格隔开的字符串,即密文

输出格式

输出一个整数,表示最后的结果,由于答案可能过大,请将答案对 109+710^9+7 取模

数据范围

对于所有数据保证 $1 \leq n \leq 10^5, 0 \leq m \leq 10^5, 1 \leq x \leq 5$,每个单词仅由小写字母组成,且长度不超过 44

并且题目保证一定存在正确的明文,不存在无限展开的密文

每部分数据包含的特殊性质如下

数据点编号 特殊性质
11 m=0m=0
232 \sim 3 保证密钥字典中所有密钥不包含其他密钥
464 \sim 6 保证明文中的单词不超过 10001000
7107 \sim 10

样例输入1

3
cc 2 ee ff
aa 3 cc ee cc
ee 1 bee
7
aa bb cc dd cc bb aa

样例输出1

4216

样例解释1

翻译出来的正确信息为

bee ff bee bee ff bb bee ff dd bee ff bb bee ff bee bee ff

其中 ASCIIASCII 码对应如下

  • bee =98+101+101=300= 98 + 101 + 101 = 300
  • ff =102+102=204=102+102=204
  • bb =98+98=196=98+98=196
  • dd =100+100=200=100+100=200

ASCIIASCII 码总和为 3008+2046+1962+200=4216300 * 8 + 204 * 6 + 196 * 2 + 200 = 4216

样例输入2

25
a 5 b b b b b 
b 5 c c c c c 
c 5 d d d d d 
d 5 e e e e e 
e 5 f f f f f 
f 5 g g g g g 
g 5 h h h h h 
h 5 i i i i i 
i 5 j j j j j 
j 5 k k k k k 
k 5 l l l l l 
l 5 m m m m m 
m 5 n n n n n 
n 5 o o o o o 
o 5 p p p p p 
p 5 q q q q q 
q 5 r r r r r 
r 5 s s s s s 
s 5 t t t t t 
t 5 u u u u u 
u 5 v v v v v 
v 5 w w w w w 
w 5 x x x x x 
x 5 y y y y y 
y 5 z z z z z 
1
a

样例输出2

476449844