Nanami 正在学习 C++,一切都是那么的难。
Nanami 给了你一些变量和一些引用表达式,希望你告诉她一个变量是初始变量的多少重引用。
一个变量是自己的零重引用。引用具有传递性,如果 'b' 是 'a' 的二重引用且 'c' 是 'b' 的三重引用,那么 'c' 就是 'a' 的五重引用。
使用 '&' 符号代表引用,有多少个就是多少重引用,例如引用表达式 "auto &&a = b",那么 'b' 就是 'a' 的二重引用。
第一行,一个整数 t(1≤t≤104),代表数据组数。
对于每组数据:
第一行,两个整数 n,q(1≤n,q≤105),代表引用表达式的个数和询问的次数。
接下来的 n 行,每行一个表达式或引用表达式。
保证第 1 行为 auto <variable name> = <value> 的形式,这里的 'variable name' 为初始变量名且 'value' 中不含有空格且长度不超过 100。
其余的 n−1 行均为 auto &...&<variable name> = <another variable name>。 保证 'variable name' 在之前没有出现过,且 'another variable name' 在之前出现过,并且 '&' 的数量不超过 10 个。
接下来的 q 行,每行一个变量名 'variable name',代表询问该变量是初始变量的几重引用,保证 'variable name' 在之前出现过。
保证所有测试点内的 n,q 的总和均不超过 105,且所有的 'variable name' 为由大小写字母组成的长度不超过 10 的字符串。
Nanami 在这里提示你,记得注意输入中的空格哦。如果你没有看懂输入格式,请参考样例。
对于每次询问,输出一行整数代表当前询问的变量是初始变量的多少重引用。
输入样例
2
4 4
auto a = 114514
auto &b = a
auto &&c = b
auto &d = c
a
b
c
d
5 3
auto A = "A"
auto &&b = A
auto &C = A
auto D = C
auto &&&e = b
C
D
e
输出样例
0
1
3
4
1
1
5