#include <iostream>
#include <vector>
#include <set>
#include <string.h>

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<string> tels(numOfTels);
    string tmp;
    for (int i = 0; i < numOfTels; ++i) {
        cin >> tmp;
        tels[i] = tmp;
    }

    int numOfDmgTels;
    vector<int> out;
    cin >> numOfDmgTels;
    for (int i = 0; i < numOfDmgTels; ++i) {
        string dmgTel;
        vector <set<char>> 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;
}