小 W 是一名喜欢语言学的算法竞赛选手。在语言学中,谐音替换是指将原有的字词替换为读音相同或相近的字词。小 W 发现,谐音替换的过程可以用字符串来进行描述。具体地,小 W 将谐音替换定义为以下字符串问题:
给定 n 个字符串二元组,第 i (1≤i≤n) 个字符串二元组为 (si,1,si,2),满足 ∣si,1∣=∣si,2∣,其中 ∣s∣ 表示字符串 s 的长度。
对于字符串 s,定义 s 的替换如下:
小 W 提出了 q 个问题,第 j (1≤j≤q) 个问题会给定两个不同的字符串 tj,1,tj,2,她想知道有多少种字符串 tj,1 的替换能够得到字符串 tj,2。两种 s 的替换不同当且仅当子串 y 的位置不同或用于替换的二元组 (si,1,si,2) 不同,即 x,z 不同或 i 不同。你需要回答小 W 提出的所有问题。
输入的第一行包含两个正整数 n,q,分别表示字符串二元组的数量和小 W 提出的问题的数量。
输入的第 i+1 (1≤i≤n) 行包含两个字符串 si,1,si,2,表示第 i 个字符串二元组。
输入的第 j+n+1 (1≤j≤q) 行包含两个字符串 tj,1,tj,2,表示小 W 提出的第 j 个问题。
输出 q 行,其中第 j (1≤j≤q) 行包含一个非负整数,表示替换后得到字符串 tj,2 的字符串 tj,1 的替换的数量。
4 2 xabcx xadex ab cd bc de aa bb xabcx xadex aaaa bbbb
2 0
3 4 a b b c c d aa bb aa b a c b a
0 0 0 0
对于小 W 的第一个询问,共有 2 种 t1,1 的替换能够得到 t1,2:
设 L1=∑i=1n∣si,1∣+∣si,2∣, L2=∑j=1q∣tj,1∣+∣tj,2∣。对于所有测试数据,保证:
| 测试点编号 | n,q≤ | L1,L2≤ | 特殊性质 |
|---|---|---|---|
| 1,2 | 102 | 200 | 无 |
| 3∼5 | 103 | 2000 | ^ |
| 6 | ^ | 106 | AB |
| 7,8 | 104 | ^ | A |
| 9,10 | 2×105 | ^ | B |
| 11,12 | ^ | 2×106 | 无 |
| 13,14 | ^ | 5×106 | A |
| 15,16 | ^ | ^ | B |
| 17∼20 | ^ | ^ | 无 |
特殊性质 A:q=1。
特殊性质 B:定义字符串 s 为特别的,当且仅当字符串 s 仅包含字符 a 和 b,且字符 b 在 s 中出现恰好一次。对于所有 1≤i≤n, si,1,si,2 均为特别的,且对于所有 1≤j≤q, tj,1,tj,2 均为特别的。