#include using namespace std; const int nmax = 100005; string str[26]; vector < int > key[nmax]; vector < int > key0; int i , n , p , k , j , answer , act; string now; const int mod[] = {66013 , 666013 , 6013 , 1000000007 , 1000000009 , 248547 , 326635788 , 55777 , 13384 , 5587425}; int main() { //freopen("test.in" , "r" , stdin); //freopen("test.out" , "w" , stdout); for (i = 0 ; i < 26 ; ++i) { cin >> str[i]; cin >> str[i]; } cin >> n; for (i = 0 ; i < n ; ++i) { cin >> now; key[i].resize(10); for (j = 0 ; j < now.size() ; ++j) { for (k = 0 ; k < str[now[j] - 'a'].size() ; ++k) { if (str[now[j] - 'a'][k] == '.') { for (p = 0 ; p < 3 ; ++p) key[i][p] = (1LL * key[i][p] * 2 + 1) % mod[p]; } else { for (p = 0 ; p < 3 ; ++p) key[i][p] = (1LL * key[i][p] * 2 + 2) % mod[p]; } } } } sort(key , key + n); answer = -1; for (i = 0 ; i < n ; ) { key0 = key[i]; act = 0; while (i < n && key0 == key[i]) act++ , i++; if (2 <= act) answer = max(answer , act); } cout << answer << '\n'; return 0; }