s=eval(input())

t=eval(input())



dp=[[0 for j in range(len(t)+1)] for i in range(len(s)+1)]



for i in range(1,len(s)+1):

    for j in range(1,len(t)+1):

        if s[i-1]==t[j-1]:

            dp[i][j]=dp[i-1][j-1]+1

        else:

            dp[i][j]=max(dp[i][j-1],dp[i-1][j])

            

i=len(s)

j=len(t)

ans=""



while i>0 and j>0:

    if dp[i][j]==dp[i-1][j]:

        i-=1

    elif dp[i][j]==dp[i][j-1]:

        j-=1

    else:

        ans=s[i-1]+ans

        i-=1

        j-=1

        

print(ans)











s=eval(input())

t=eval(input())

n,m=len(s),len(t)

dp=[[0]*(m+1) for i in range(n+1)]

dp[0][0]=1



for i in range(n+1):

    for j in range(m+1):

        dp[i][j]=max(dp[i][j-1],dp[i-1][j])

        if i*j!=0 and s[i-1]==t[j-1]:

            dp[i][j]=max(dp[i-1][j-1]+1,dp[i][j])



ans=""

i,j=n,m

while 0<i and 0<j:

    if dp[i][j]==dp[i-1][j]:

        i-=1

    elif dp[i][j]==dp[i][j-1]:

        j-=1

    else:

        ans+=s[i-1]

        i-=1

        j-=1



print((ans[::-1]))







s = eval(input())
t = eval(input())
dp = [[0 for j in range(len(t) + 1)] for i in range(len(s) + 1)]
for i in range(1, len(s) + 1):
    for j in range(1, len(t) + 1):
        if s[i - 1] == t[j - 1]:
            dp[i][j] = dp[i - 1][j - 1] + 1
        else:
            dp[i][j] = max(dp[i][j - 1], dp[i - 1][j])
i = len(s)
j = len(t)
ans = ""
while i > 0 and j > 0:
    if dp[i][j] == dp[i - 1][j]:
        i -= 1
    elif dp[i][j] == dp[i][j - 1]:
        j -= 1
    else:
        ans = s[i - 1] + ans
        i -= 1
        j -= 1
print(ans)

s = eval(input())
t = eval(input())
n, m = len(s), len(t)
dp = [[0] * (m + 1) for i in range(n + 1)]
dp[0][0] = 1
for i in range(n + 1):
    for j in range(m + 1):
        dp[i][j] = max(dp[i][j - 1], dp[i - 1][j])
        if i * j != 0 and s[i - 1] == t[j - 1]:
            dp[i][j] = max(dp[i - 1][j - 1] + 1, dp[i][j])
ans = ""
i, j = n, m
while 0 < i and 0 < j:
    if dp[i][j] == dp[i - 1][j]:
        i -= 1
    elif dp[i][j] == dp[i][j - 1]:
        j -= 1
    else:
        ans += s[i - 1]
        i -= 1
        j -= 1
print((ans[::-1]))

-dp = [[0 for j in range(len(t) + 1)] for i in range(len(s) + 1)] -for i in range(1, len(s) + 1): -    for j in range(1, len(t) + 1): -        if s[i - 1] == t[j - 1]: -            dp[i][j] = dp[i - 1][j - 1] + 1 -        else: -            dp[i][j] = max(dp[i][j - 1], dp[i - 1][j]) -i = len(s) -j = len(t) +n, m = len(s), len(t) +dp = [[0] * (m + 1) for i in range(n + 1)] +dp[0][0] = 1 +for i in range(n + 1): +    for j in range(m + 1): +        dp[i][j] = max(dp[i][j - 1], dp[i - 1][j]) +        if i * j != 0 and s[i - 1] == t[j - 1]: +            dp[i][j] = max(dp[i - 1][j - 1] + 1, dp[i][j]) -while i > 0 and j > 0: +i, j = n, m +while 0 < i and 0 < j: -        ans = s[i - 1] + ans +        ans += s[i - 1] -print(ans) +print((ans[::-1]))