#include <stdio.h>

/* 判断是否能够通配,除字母和数组,其他字符无法通配 */
int is_match(char ch)
{
    if((ch >= '0' && ch <= '9')
       || (ch >= 'a' && ch <= 'z')
       )
    {
        return 1;
    }
    
    return 0;
}


int match(char* str0, char* str1)
{
    /* 同时到字符末尾,则匹配成功 */
    if(*str0 == '\0' && *str1 == '\0')
    {
        return 1;
    }/* 有一个字符串先到末尾,则匹配失败 */
    else if((*str0 == '\0') || (*str1 == '\0'))
    {
        return 0;
    }
    
    /* 遇到问号,通配一个字符 */
    if(*str0 == '?' && is_match(*str1))
    {
        return match(str0+1, str1+1);
    }
    else if(*str0 == '*' && is_match(*str1))
    {    /* 遇到*号,且下一个字符也为*,则仅通配一个字符就够了 */
        if(*(str0+1) != '\0' && *(str0+1) == '*')
        {
            return match(str0+1, str1+1);
        }
        else /* 遇到*号,且下一个字符不为*,通配0个,1个,多个 */
        {
            //遇到*号,匹配0个(str0+1,str1不用动),匹配1个(str0和str1都往前移动1位),匹配多个(str0不用动,str1+1)
            return match(str0+1, str1) || match(str0+1, str1+1) || match(str0, str1+1);
        }
        
    }
    else if(*str0 == *str1)
    {
        return match(str0+1, str1+1);
    }
    
    return 0;
    
    
}

int main()
{
    char str[2][101] = {0};
    int res = 0;
    int i;
    for(i = 0; i < 2; i++)
    {
        scanf("%s", str[i]);
    }
     
    int len0 = strlen(str[0]);
    int len1 = strlen(str[1]);
    
     for (int k = 0; k < len0; k++)
    {
      if (str[0][k] >= 'A' && str[0][k] <= 'Z')
        str[0][k] = str[0][k] - 'A' + 'a';
    }
    for (int k = 0; k < len1; k++)
    {
      if (str[1][k] >= 'A' && str[1][k] <= 'Z')
        str[1][k] = str[1][k] - 'A' + 'a';
    }
    
    
    if(match(str[0], str[1]))
    {
        printf("true\n");
    }
    else
    {
        printf("false\n");
    }
    
}