# 动态规划 以 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)]))