#1911. 2915. [Poi1997] gen
2915. [Poi1997] gen
#2915. [Poi1997] gen
题目描述
基因串 是由一串有限长度的基因所组成的,其中每一个基因都可以用26个英文大写字母中的一个来表示,不同的字母表示不同的基因类型。一个单独的基因可以生长成为一对新的基因,而可能成长的规则是通过一个有限的成长规则集所决定的。每一个成长的规则可以用三个大写英文字母A1A2A3来描述,这个规则的意思是基因A1可以成长为一对基因A2A3。
我们用大写字母S来表示一类被称作 超级基因 的基因。因为每一个基因串都是由一串超级基因根据给出的规则所成长出来的。
任务:
请写一个程序:
l 读入有限条成长的规则和一些我们想要得到的基因串;
l 对于每个基因串,试判断它是否可以由一个有限长度的超级基因串成长得出。如果可以,那么请给出可成长为该基因串的最短超级基因串的长度;
l 把结果输出
输入格式
第一行包括一个整数 n , 1 _£ n _£ 10000。以下的 n 行中每行都包括一个成长的规则,每个规则由三个大写英文字母组成。
在该文件的第 n+1 行包括一个整数 k , 1 _£ k _£ 10000。以下的 k 行中每行都有一个基因串。每个基因串都是一个长度不超过100的大写字符串。
输出格式
你应该输出入下内容:
l 一个正整数,表示成长为改基因串所需的最短的超级基因串的长度;
l 或一个单词NIE(波兰语的"否"),如果说无法由超级基因串成长成为该基因串。
样例
样例输入
6
SAB
SBC
SAA
ACA
BCC
CBC
3
ABBCAAABCA
CCC
BA
样例输出
3
1
NIE