Problem:
Score : 100 points

Problem Statement

You are given strings s and t.
Find one longest string that is a subsequence of both s and t.

Notes

A subsequence of a string x is the string obtained by removing zero or more characters from x and concatenating the remaining characters without changing the order.

Constraints

s and t are strings consisting of lowercase English letters.

1 \leq |s|, |t| \leq 3000

Input

Input is given from Standard Input in the following format:

s
t

Output

Print one longest string that is a subsequence of both s and t.
If there are multiple such strings, any of them will be accepted.

Sample Input 1

axyb
abyxb

Sample Output 1

axb

The answer is axb or ayb; either will be accepted.

Sample Input 2

aa
xayaz

Sample Output 2

aa

Sample Input 3

a
z

Sample Output 3

The answer is (an empty string).

Sample Input 4

abracadabra
avadakedavra

Sample Output 4

aaadara

Solution in Pascal (FPC 2.6.2) (judge verdict: Runtime Error)

uses math;
var
        f:text;
        x,y: ansistring;
        g: array [0..3000,0..3000] of longint;
        h: array [0..3000] of string;
        i,j,s,t,a: longint;

begin

        readln ( x);
        readln ( y);



        fillchar(g, sizeof (g),0);

        for i:=1 to length(x) do
        for j:=1 to length(y) do
        if x[i] = y[j] then g[i,j]:= g[i-1,j-1] + 1
        else g[i,j]:= max(g[i-1,j], g[i, j-1]);


        a:=0;
        i:= length (x); j:= length (y);
        while i>0 do
        begin

                if  x[i] = y[j] then
                begin
                        inc(a); h[a]:= x[i];
                        dec(i); dec(j);
                end
                else
                if g[i-1,j] > g[i, j-1] then dec (i) else dec (j);
        end;

        for i:=a downto 1 do write (h[i]);
        readln;

end.