# 用动态规划 # dp[i][j] 表示 s1[0:i+1],s2[0:j+1] 是否匹配 # s1[i]!=s2[j]: False # s1[i] == '?': 看 dp[i-1][j-1] # s1[i] == '*': 看所有的dp[i-1][0:j+1] 有 True 就是 True while True: try: s1,s2 = input(),input() n1,n2 = len(s1),len(s2) dp = [[0]*n2 for i in range(n1)] for i in range(n1): for j in range(n2): if i == 0: if s1[i] == '*' and s2[j].isalnum(): dp[i][j] = True else: if j > 0: dp[i][j] = False else: if (s1[i] == '?' and s2[j].isalnum()) or s1[i].lower() == s2[j].lower(): dp[i][j] = True else: dp[i][j] = False elif j == 0: tmp = "" for mm in s1[0:i+1]: if mm == "*": pass else: tmp += mm if len(tmp) > 1: dp[i][j] = False elif len(tmp) == 1: if (tmp == '?' and s2[j].isalnum()) or tmp.lower() == s2[j].lower(): dp[i][j] = True else: dp[i][j] = False else: if s1[i] != '*' and s1[i] != '?': if s1[i].lower() != s2[j].lower(): dp[i][j] = False else: dp[i][j] = dp[i-1][j-1] elif s1[i] == '?': if s2[j].isalnum(): dp[i][j] = dp[i-1][j-1] else: dp[i][j] = False else: # '*' dp[i][j] = False for mm in range(0,j+1): if dp[i-1][mm] == True: dp[i][j] = True break if dp[n1-1][n2-1]: print('true ') else: print('false ') except: break