# 动态规划 以 dp[i][j]: 分别以i,j为结尾的最大子串的长度 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 or j == 0: dp[i][j] = 1 if s1[i] == s2[j] else 0 else: if s1[i] == s2[j]: dp[i][j] = dp[i-1][j-1]+1 else: dp[i][j] = 0 print(max([dp[i][j] for i in range(n1) for j in range(n2)]))