nums = int(input()) tree = dict() invtree = dict() def emplace(num, tree): for idx, char in enumerate(num): positions = tree.get(char, dict()) tree[char] = positions tree = positions def count(num, tree): if not num: return 1 char = num[0] substr = num[1:] if char == '?': total = 0 for _, sub in tree.items(): total += count(substr, sub) return total if char not in tree: return 0 return count(substr, tree[char]) for _ in range(nums): num = input() emplace(num, tree) emplace(num[::-1], invtree) nums = int(input()) def drop_ast(num): if '*' not in num: return num length = 9 - len(num) + 1 return ''.join([char if char != '*' else '?'*length for char in num]) for _ in range(nums): num = input() num = drop_ast(num) left_seq = 0 right_seq = 0 for char in num: if char == '?': break left_seq += 1 rev = num[::-1] for char in rev: if char == '?': break right_seq += 1 t = invtree if right_seq > left_seq else tree print(count(num, t))