# 用动态规划
# 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



京公网安备 11010502036488号