let longer s1 s2 =
    if fst s1 >= fst s2
    then s1
    else s2

let rec update t_i s dp dp_i_j1 dp_i1_j1 =
    match s, dp with
    | s_j :: s', dp_i1_j :: dp' ->
        let dp_i_j =
            if s_j = t_i
            then (1 + fst dp_i1_j1, s_j :: snd dp_i1_j1)
            else longer dp_i1_j dp_i_j1
        in dp_i_j :: update t_i s' dp' dp_i_j dp_i1_j
    | _ -> dp

let rec solve s t dp =
    match t with
    | t_i :: t' -> solve s t' @@ update t_i s dp (0, []) (0, [])
    | [] -> dp

let () =
    let s = read_line () |> Str.split (Str.regexp "") |> List.map (fun s -> s.[0]) in
    let t = read_line () |> Str.split (Str.regexp "") |> List.map (fun s -> s.[0]) in
    let rec init n =
        if n = 0 then []
        else (0, []) :: init (n - 1)
    in
    let s_len = List.length s in
    solve s t (init s_len)
    |> (fun ls -> List.nth ls (s_len - 1))
    |> snd
    |> List.rev
    |> List.iter print_char;
    print_newline ()
