#字符串通配符

"""

题目描述

问题描述:在计算机中,通配符一种特殊语法,广泛应用于文件搜索、数据库、正则表达式等领域。

现要求各位实现字符串通配符的算法。

要求:

实现如下2个通配符:

*:匹配0个或以上的字符(字符由英文字母和数字0-9组成,不区分大小写。下同)

?:匹配1个字符

输入:

通配符表达式;

一组字符串。

输出:

返回匹配的结果,正确输出true,错误输出false

本题含有多组样例输入!

输入描述:

先输入一个带有通配符的字符串,再输入一个需要匹配的字符串

输出描述:

返回匹配的结果,正确输出true,错误输出false

"""
"""
te?t*.*
txt12.xls
"""
while True:
    try:
        s1 = input()
        s2 = input()
        i = 0
        j = 0
        k = 'true'
        #从第一个字符进行比较
        while i < len(s1) - 1 and j < len(s2) - 1:
            #如果对应的字符一样或者s1中的字符为?,继续比较下一个
            if s1[i] == s2[j] or s1[i] == '?':
                i += 1
                j += 1
            elif s1[i] == '*':
                #如果下一个字符一样,可以不用管s2的第j个字符,继续比较下去
                if s1[i + 1] == s2[j + 1]:
                    i += 1
                    j += 1
                #如果下一个字符不一样,那么s1的*匹配s2的多个字符
                else:
                    j += 1
            #如果上面两种情况都不满足,在匹配失败,退出循环
            else:
                k = 'false'
                break
        #如果匹配完成后,k的值仍为true,则匹配成功
        print(k)
    except:
        break
#日期转换为天数
"""题目描述
根据输入的日期,计算是这一年的第几天。。
测试用例有多组,注意循环输入
输入描述:
输入多行,每行空格分割,分别是年,月,日
输出描述:
成功:返回outDay输出计算后的第几天;失败:返回-1
"""
#2020 12 12
while True:
    try:
        y,m,d=map(int,input().split())
        month=[31,28,31,30,31,30,31,31,30,31,30,31]
        #计算天数
        days = sum(month[:(m-1)])+d
        #平年的二月有28年,闰年的二月的29天,能被4整除或者400整除的年份,二月是闰年,反之,是平年
        if m>2 and (y%4==0 and y%100!=0 or y%400==0):
            days +=1
        print(days)
    except:
        break
#查找最长公共子字符串
"""
题目描述
查找两个字符串a,b中的最长公共子串。若有多个,输出在较短串中最先出现的那个。
注:子串的定义:将一个字符串删去前缀和后缀(也可以不删)形成的字符串。请和“子序列”的概念分开!
本题含有多组输入数据!
输入描述:
输入两个字符串
输出描述:
返回重复出现的字符
"""
while True:
    try:
        str1=input()
        str2=input()
        n = 0
        s = ''
        #找到长度较小的字符串,放在str1处
        if len(str1)>len(str2):
            str1,str2 = str2, str1
        for i in range(len(str1)+1):
            if str1[i-n:i] in str2:              #abcdefghijklmnop
                s = str1[i-n:i]               #abcsafjklmnopqrstuvw
                n +=1
                print(s)
        print("="*30)
        print(s,len(s))
    except:
        break
#abcdefghijklmnop
#abcsafjklmnopqrstuvw
# while True:
#     try:
#         s1 = input()
#         s2 = input()
#         if len(s1) > len(s2):
#             s1, s2 = s2, s1
#         m, n = len(s1), len(s2)
#         dp = [[0] * (n+1) for _ in range(m+1)]
#         index, max_len = 0, 0
#         for i in range(1, m+1):
#             for j in range(1, n+1):
#                 if s1[i-1] == s2[j-1]:
#                     dp[i][j] = dp[i-1][j-1] + 1
#                     if dp[i][j] > max_len:
#                         max_len = dp[i][j]
#                         index = i
#                 else:
#                     dp[i][j] = 0
#         print(s1[index-max_len:index])
#     except:
#         break