#include #include #include using namespace std; char v[30][20]; char sir[100020]; struct elem{char str[500020]; int val = 0;}; vector R; int n; char result[500020]; void change(char s[]); int main() { int i, j, total = 0; for(i = 1; i <= 26; i++){ cin.getline(sir, 20); sir[1] = '\0'; strcpy(v[sir[0]-'a'+1],sir+2); } cin >> n; cin.get(); for(i = 1; i <= n; i++){ cin.getline(sir,100020); change(sir); for(j = 0; j < total; j++){ if(strcmp(R[j].str, result) == 0){ R[j].val++; break; } } if(j == total){ elem x; strcpy(x.str, result); x.val = 1 ; R.push_back(x); total++; } } int maxim = 0; int lg = R.size(); for(i = 0; i < lg; i++){ if(R[i].val > maxim) maxim = R[i].val; } if(maxim == 0) cout << "-1\n"; else cout << maxim << '\n'; return 0; } void change(char s[]){ memset(result, 0, sizeof(result)); //result[0] = "\0"; int lg = strlen(s); for(int i = 0; i < lg; i++){ strcat(result,v[s[i]-'a'+1]); } result[strlen(result)] = '\0'; }