#!/usr/bin/env python # -*- coding: utf-8 -*- # # earthquake.py # # Copyright 2022 ACM CTU Contest Team 53 # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, # MA 02110-1301, USA. # # def main(args): # load data len_slovnik = int(input().strip()) slovnik = [] for i in range(len_slovnik): slovnik.append(input().strip()) len_stained = int(input().strip()) for i in range(len_stained): stained = input().strip() matches = 0 if stained in slovnik: matches+=1 elif '?' in stained: index = stained.find('?') index2 = -1 if '?' in stained[index + 1:]: index2 = index + 1 + stained[index + 1:].find('?') for j in range(len_slovnik): #print(index, index2) if ((index2 != -1) and ((stained[:index] == slovnik[j][:index]) and (stained[index + 1:index2] == slovnik[j][index + 1:index2]) and (stained[index2 + 1:] == slovnik[j][index2 + 1:]))): matches += 1 elif ((stained[:index] == slovnik[j][:index]) and (stained[index + 1:] == slovnik[j][index + 1:])): matches += 1 elif '*' in stained: visible = len(stained) - 1 non_visible = 9 - visible index = stained.find('*') for j in range(len_slovnik): if ((stained[:index] == slovnik[j][:index]) and (stained[index + 1:] == slovnik[j][index + non_visible:])): matches += 1 print(matches) return 0 if __name__ == '__main__': import sys sys.exit(main(sys.argv))