#include #include #include #include using namespace std; string normalize(string tel) { string normalizeTel = ""; for(size_t i = 0; i < tel.size(); ++i) { if(tel[i] != '*') normalizeTel += tel[i]; else { for (size_t j = 0; j < ((9-i)-(tel.size() - (i + 1))); ++j) { normalizeTel += '?'; } } } return normalizeTel; } int main (){ int numOfTels; cin >> numOfTels; vector tels(numOfTels); string tmp; for (int i = 0; i < numOfTels; ++i) { cin >> tmp; tels[i] = tmp; } int numOfDmgTels; vector out; cin >> numOfDmgTels; for (int i = 0; i < numOfDmgTels; ++i) { string dmgTel; vector > pattern(9); cin >> dmgTel; if(dmgTel.find('*') < 42){ dmgTel = normalize(dmgTel); } for (size_t pos = 0; pos < 9; ++pos) { switch (dmgTel[pos]) { case('?'): { pattern[pos].insert({'0','1','2','3','4','5','6','7','8','9'}); break; } default: { pattern[pos].insert(dmgTel[pos]); break; } } } int count = 0; for(string tel : tels) { bool ok = true; for (int pos = 0; pos < 9; ++pos) { if(pattern[pos].find(tel[pos]) != pattern[pos].end()) continue; ok = false; break; } if(ok) ++count; } out.push_back(count); } for(int i : out) cout << i << '\n'; return 0; }