#include #include #include #include using namespace std; #define CH *ch-'a' //ifstream cin("000.in"); //ofstream cout("000.out"); int mat[30][30], Max=-1, pozitie[30]; char sir[100009]; struct Trie { int cnt, nrfii; Trie *fii[2]; Trie() { cnt=nrfii=0; memset(fii, 0, sizeof(fii)); } }; Trie *T=new Trie; void insertTrie(Trie *node, char *ch, int poz, int len) { if(len==strlen(sir+1)+1 && poz==1) { node->cnt++; if(node->cnt!=1) Max=max(Max, node->cnt); return; } if(node->fii[mat[pozitie[CH]][poz]]==0) { node->fii[mat[pozitie[CH]][poz]]=new Trie; node->nrfii++; } if(poz==mat[CH][0]) insertTrie(node->fii[mat[pozitie[CH]][poz]], sir+len+1, 1, len+1); else insertTrie(node->fii[mat[pozitie[CH]][poz]], ch, poz+1, len); } int main() { for(int i=0; i<=25; i++) { cin.getline(sir+1, 10); int ch=sir[1]-'a'; pozitie[ch]=i; for(int j=3; sir[j]=='.' || sir[j]=='-'; j++) { if(sir[j]=='.') mat[pozitie[ch]][++mat[ch][0]]=0; else mat[pozitie[ch]][++mat[ch][0]]=1; } } int n; cin>>n; cin.get(); for(int i=1; i<=n; i++) { cin.getline(sir+1, 100005); insertTrie(T, sir+1, 1, 1); } cout<