2025-12-29 21:01:50 +09:00

28 lines
618 B
Python

s1, s2 = input(), input()
l1, l2 = len(s1), len(s2)
dp = [[0]*(l2+1) for _ in range(l1+1)]
for i in range(l1) :
for j in range(l2) :
if s1[i] == s2[j] :
dp[i+1][j+1] = dp[i][j] + 1
else :
dp[i+1][j+1] = max(dp[i+1][j], dp[i][j+1])
print(dp[l1][l2])
if dp[l1][l2] != 0 :
ans = []
p1, p2 = l1, l2
while p1 > 0 and p2 > 0 :
if dp[p1][p2-1] == dp[p1][p2] :
p2 -= 1
elif dp[p1-1][p2] == dp[p1][p2] :
p1 -= 1
else :
ans.append(s2[p2-1])
p1, p2 = p1-1, p2-1
print("".join(ans[::-1]))