#include #include #include #include using namespace std; ifstream fin("date.in"); #define MOD1 1000000007 #define MOD2 1000000009 #define mp make_pair map , int> M; char sir[255][10], cuv[100010]; pair buildHash(char c[]){ int i, j; char litera; pair p = mp(1, 1); for(i = 0 ; c[i] ; i++) { for(j = 0 ; sir[c[i]][j] ; j++) { litera = sir[c[i]][j]; if(litera == '.') litera = 0; else litera = 1; p.first = p.first * 2 + litera; p.second = p.second * 2 + litera; while(p.first >= MOD1) p.first -= MOD1; while(p.second >= MOD2) p.second -= MOD2; } } return p; } int main() { char c; int i, n, maxim = 0; for(i = 1 ; i <= 26; i++) { cin >> c; cin >> sir[c]; } cin >> n; for(i = 0 ; i < n ; i++) { cin>>cuv; pair p = buildHash(cuv); //cout << p.first << " " << p.second << "\n"; M[p]++; if(M[p] > maxim){ maxim = M[p]; } } if(maxim == 1) cout << "-1\n"; else cout << maxim << "\n"; }