s = eval(input())

t = eval(input())



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

ans = ''

for i in range(len(t)):

    for j in range(len(s)):

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

            DP[i+1][j+1] = DP[i][j]+1

        else:

            DP[i+1][j+1] = max(DP[i][j+1],DP[i+1][j])



i = len(t)

j = len(s)

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:

        i -= 1

        j -= 1

        ans = ans + t[i]

ans = ans[::-1]

print(ans)
s = eval(input())

t = eval(input())



dp = [[0]*(len(t)+1) for _ in range(len(s)+1)]



for n in range(len(s)):

    for m in range(len(t)):

        if s[n] == t[m]:

            dp[n+1][m+1] = dp[n][m]+1

        else:

            dp[n+1][m+1] = max(dp[n+1][m],dp[n][m+1])



n = len(s)

m = len(t)

ans = ''

while n >= 0 and m >= 0:

    if dp[n][m] == dp[n-1][m]:

        n -= 1

    elif dp[n][m] == dp[n][m-1]:

        m -= 1

    else:

        ans = s[n-1]+ans

        n -= 1

        m -= 1

print(ans)
s = eval(input())
t = eval(input())
DP = [[0 for i in range(len(s) + 1)] for i in range(len(t) + 1)]
ans = ""
for i in range(len(t)):
    for j in range(len(s)):
        if t[i] == s[j]:
            DP[i + 1][j + 1] = DP[i][j] + 1
        else:
            DP[i + 1][j + 1] = max(DP[i][j + 1], DP[i + 1][j])
i = len(t)
j = len(s)
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:
        i -= 1
        j -= 1
        ans = ans + t[i]
ans = ans[::-1]
print(ans)

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

-DP = [[0 for i in range(len(s) + 1)] for i in range(len(t) + 1)] +dp = [[0] * (len(t) + 1) for _ in range(len(s) + 1)] +for n in range(len(s)): +    for m in range(len(t)): +        if s[n] == t[m]: +            dp[n + 1][m + 1] = dp[n][m] + 1 +        else: +            dp[n + 1][m + 1] = max(dp[n + 1][m], dp[n][m + 1]) +n = len(s) +m = len(t) -for i in range(len(t)): -    for j in range(len(s)): -        if t[i] == s[j]: -            DP[i + 1][j + 1] = DP[i][j] + 1 -        else: -            DP[i + 1][j + 1] = max(DP[i][j + 1], DP[i + 1][j]) -i = len(t) -j = len(s) -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 +while n >= 0 and m >= 0: +    if dp[n][m] == dp[n - 1][m]: +        n -= 1 +    elif dp[n][m] == dp[n][m - 1]: +        m -= 1 -        i -= 1 -        j -= 1 -        ans = ans + t[i] -ans = ans[::-1] +        ans = s[n - 1] + ans +        n -= 1 +        m -= 1