#!/bin/python3

from pprint import pprint

n = int(input())

all_set = set()

digit_maps = [{} for i in range(9)]
three_maps = [{} for i in range(3)]

def fill_maps(number):
    global digit_maps
    for i in range(9):
        c = number[i]
        digit_maps[i].setdefault(c, set()).add(number)

def fill_maps3(number):
    global three_maps
    for i in range(3):
        subnum = number[i * 3:(i + 1) * 3]
        three_maps[i].setdefault(subnum, set()).add(number)

def find_matches(question):
    global digit_maps
    global three_maps
    ret = all_set
    for three_index in range(3):
        subnum = question[three_index * 3:(three_index + 1) * 3]
        if '?' not in subnum:
            if subnum not in three_maps[three_index]:
                return 0
            ret = ret.intersection(three_maps[three_index][subnum])
            continue

        for i in range(3 * three_index, 3 * (three_index + 1)):
            c = question[i]
            if c == '?':
                continue
            if c not in digit_maps[i]:
                return 0
            ret = ret.intersection(digit_maps[i][c])
    return len(ret)

def find_matches_old(question):
    global digit_maps
    ret = all_set
    for i in range(9):
        c = question[i]
        if c == '?':
            continue
        if c not in digit_maps[i]:
            return 0
        ret = ret.intersection(digit_maps[i][c])
    return len(ret)


for i in range(n):
    number = input()
    fill_maps(number)
    fill_maps3(number)
    all_set.add(number)

#pprint(digit_maps)
#pprint(three_maps)

q = int(input())

for i in range(q):
    question = input()
    if question in all_set:
        print(1)
        continue

    if question == '*':
        print(len(all_set))
        continue

    if '*' in question:
        a, b, c = question.partition('*')
        question = a + (9 - (len(question) - 1)) * '?' + c
    
    ret = find_matches(question)
    print(ret)
