#include #include #include #define maxn 100005 using namespace std; struct trie{ int nr; trie *son[2]; trie() { nr = 0; for(int i=0;i<2;i++) son[i]= NULL; } }; int n; char s[maxn]; char morse[26][100]; int sol; trie *r; void insert() { trie *node = r; int ind; for(int i=1;i<=n;i++) for(int j=1;j<=morse[s[i]-'a'][0];j++) { if( morse[s[i]-'a'][j] == '.') ind = 0; else ind = 1; if( node->son[ind] == NULL ) node->son[ind] = new trie(); node = node->son[ind]; } node->nr++; sol = max(sol,node->nr); } void read() { char c; for(int i=0;i<26;i++) { scanf("%c ",&c); scanf("%s\n",morse[c-'a']+1); morse[c-'a'][0] = strlen(morse[c-'a']+1); } int nr; scanf("%d\n",&nr); for(int i=1;i<=nr;i++) { scanf("%s\n",s+1); n = strlen(s+1); insert(); } } int main() { // freopen("date.in","r",stdin); r = new trie(); read(); printf("%d",sol); return 0; }