#include using namespace std; #define all(x) begin(x), end(x) int main() { cin.tie(0)->sync_with_stdio(0); cin.exceptions(cin.failbit); int N; cin >> N; vector list; map al; for (int i = 0; i < N; ++i) { string in; cin >> in; list.push_back(in); al[stoi(in)] = 1; } vector> jedenot; vector>> dvaot; vector>> jednahvezdicka; for (int i = 0; i < 9; ++i) { jedenot.emplace_back(); for (auto str:list) { string nstr; copy(str.begin(), str.end(), nstr.begin()); nstr[i] = '0'; jedenot[i][stoi(nstr)]++; } } for (int i = 0; i < 9; ++i) { dvaot.emplace_back(); for (int j = 0; j < 9; ++j) { dvaot[i].emplace_back(); } for (int j = i + 1; j < 9; ++j) { for (auto str:list) { string nstr; copy(str.begin(), str.end(), nstr.begin()); nstr[i] = '0'; nstr[j] = '0'; dvaot[i][j][stoi(nstr)]++; } } } for (int i = 0; i < 9; ++i) { jednahvezdicka.emplace_back(); for (int j = 0; j < 9; ++j) { jednahvezdicka[i].emplace_back(); } for (int j = i + 1; j < 9; ++j) { for (auto str:list) { string nstr; copy(str.begin(), str.end(), nstr.begin()); for (int k = i; k < j; ++k) { nstr[k] = '0'; } jednahvezdicka[i][j][stoi(nstr)]++; } } } int Q; cin >> Q; for (int i = 0; i < Q; ++i) { string in; cin >> in; int ot1 = -1; int ot2 = -1; int hvezdicka = -1; for (int j = 0; j < in.size(); ++j) { if (in[j] == '?') { if (ot1 == -1) { ot1 = j; } else { ot2 = j; } } else if (in[j] == '*') hvezdicka = j; } if (ot1 == -1 && hvezdicka == -1) { cout << al[stoi(in)] << endl; } else if (hvezdicka != -1) { string slovo(in.begin(), in.begin() + hvezdicka); string zbytek(in.begin() + hvezdicka + 1, in.end()); int delka = 9 - in.size() + 1; for (int j = 0; j < delka; ++j) { slovo += '0'; } slovo += zbytek; cout << jednahvezdicka[hvezdicka][hvezdicka + delka][stoi(slovo)] << endl; } else if (ot2 == -1) { in[ot1] = '0'; cout << jedenot[ot1][stoi(in)] << endl; } else { in[ot1] = '0'; in[ot2] = '0'; cout << dvaot[ot1][ot2][stoi(in)] << endl; } } return 0; }