
undamaged = [[set() for num in range(10)] for dig in range(9)]

for un_cnt in range(int(input())):
    un = input().strip()

    undamaged[0][int(un[0])].add(int(un))
    undamaged[1][int(un[1])].add(int(un))
    undamaged[2][int(un[2])].add(int(un))
    undamaged[3][int(un[3])].add(int(un))
    undamaged[4][int(un[4])].add(int(un))
    undamaged[5][int(un[5])].add(int(un))
    undamaged[6][int(un[6])].add(int(un))
    undamaged[7][int(un[7])].add(int(un))
    undamaged[8][int(un[8])].add(int(un))

def process_coffee(undamaged, d):
    d_set = None
    for i in range(9):
        if d[i] == '?':
            continue
        if d_set == None:
            d_set = undamaged[i][int(d[i])]
        else:
            d_set = d_set.intersection(undamaged[i][int(d[i])])
    return d_set.__len__()

def process_juice(undamaged, d):
    d_set = None
    for i in range(9):
        if d[i] == '*':
            break
        if d_set == None:
            d_set = undamaged[i][int(d[i])]
        else:
            d_set = d_set.intersection(undamaged[i][int(d[i])])
    
    for i in range(-1, -len(d), -1):
        if d[i] == '*':
            break
        if d_set == None:
            d_set = undamaged[i][int(d[i])]
        else:
            d_set = d_set.intersection(undamaged[i][int(d[i])])
    return d_set.__len__()

for d_cnt in range(int(input())):
    d = input().strip()
    if '?' in d:
        print(process_coffee(undamaged, d))
    elif '*' in d:
        print(process_juice(undamaged, d))
