#!/usr/bin/python3 # Author: Jirka Setnička wildcard = input() N = int(input()) # Rozdělíme si wildcard na prefix a suffix podle * (prefix, suffix) = wildcard.split('*', maxsplit=2) # suffix obrátíme, aby se nám s ním lépe pracovalo suffix = list(reversed(suffix)) # Funkce testující, zdali dané slovo začíná wildcardem def zacina_wildcardem(wildcard, slovo): # zip() postupně vrací první písmena obou stringů, pak druhá písmena, ... for w, c in zip(wildcard, slovo): # Pokud nějaká pozice nesedí, vrátíme False, jinak dojdeme až na konec # a vrátíme True if w == 'a' and not c.islower(): return False elif w == 'A' and not c.isupper(): return False elif w == '0' and not c.isdigit(): return False return True for i in range(N): slovo = input() # Slovo musí být dlouhé alespoň tolik, co wildcard bez hvězdičky, jinak # nemůže matchovat. Je to kontrola kvůli například wildcardu 'aa0*0AA' # a slovu 'ab5CD' - to matchuje prefix i suffix, ale už ne celý wildcard # dohromady. if len(slovo) < len(wildcard) - 1: print('ne') elif zacina_wildcardem(prefix, slovo) and zacina_wildcardem(suffix, list(reversed(slovo))): # Pokud slovo matchuje prefix i suffix (a má dostatečnou délku), tak # hvězdička uprostřed 'požere' jakýkoliv zbytek print('ano') else: print('ne')