include<bits/stdc++.h>

using namespace std;
bool is_character(char c) {//判断是否为字符
if((c >= 'a' && c <= 'z') || (c >= 'A' && c<= 'Z') || (c >= '0' && c<= '9'))
return true;
else return false;
}
int main() {
string s1,s2;
while(cin>>s1>>s2){
int len1 = s1.length() + 1,len2 = s2.length() + 1;
bool dp[len1][len2];
for(int i = 0;i < len1;i++) dp[0][i] = false;
for(int i = 0;i < len2;i++) {
dp[i][0] == true;
for(int j = 0;j < i && j < len1 - 1;j++) {
if(s1[j] != '') {
dp[i][0] == false;
break;
}
}
}//进行dp的初始化 需要判断s1是否是从第一位开始就全都是*如果不是就设置为false
dp[0][0] = true;
for(int i = 1;i < len1;i++) {
for(int j = 1;j < len2;j++) {
if(s1[i - 1] == '
') {//如果s1该位置为*
if(is_character(s2[j - 1])) {//判断s2该位置是否为字符
dp[i][j] = dp[i - 1][j] || dp[i][j - 1];
}//如果是字符则可以表示0或任意个字符
else {
dp[i][j] = dp[i - 1][j];
}//如果不是字符
只能表示空
}
else if(s1[i - 1] == '?') {
//如果s1该位置为?
if(is_character(s2[j - 1])) {
//判断s2该位置是否为字符
dp[i][j] = dp[i - 1][j - 1];
}
else {
dp[i][j] = false;
}
}
else {
dp[i][j] = dp[i - 1][j - 1] && (s1[i - 1] == s2[j - 1]);
}
}
}
if(dp[len1 - 1][len2 - 1]) {
cout<<"true"<<endl;
}
else {
cout<<"false"<<endl;
}
}
}