import re

#class Node:
#    def __init__(self):
#        self.children = {}


N = int(input())
correct = []
for _ in range(N):
    correct.append(input())

dicts = {}
for num in correct:
    current = dicts
    for i, digit in enumerate(num):
        if i != len(num) - 1:
            if digit not in current:
                current[digit] = {}
            current = current[digit]
        else:
            current[digit] = True
#print(dicts)

def recursive(current_damaged, current_dict):
    if len(current_damaged) == 0:
        return 1
    result = 0
    current = current_damaged.pop()
    if current == "?":
        for x in current_dict:
            result += recursive(current_damaged[:], current_dict[x])
    else:
        if current in current_dict:
            result += recursive(current_damaged[:], current_dict[current])

    return result
    

Q = int(input())
for _ in range(Q):
    damaged = input()
    #damaged = damaged.replace("*", "?" * (9 - len(damaged) + 1))

    if "*" not in damaged or len(damaged) > 4:
        damaged = damaged.replace("*", "?" * (9 - len(damaged) + 1))
        damaged = list(damaged)
        damaged.reverse()
        print(recursive(damaged[:], dicts))
    elif damaged == "*":
        print(len(correct))
    else:
        result = 0
        for candidate in correct:
            damaged = damaged.replace("*", ".*")
            if re.match(damaged, candidate):
                result += 1
        print(result)