let longer s1 s2 =
    if List.length s1 >= List.length 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 s_j :: 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 [] []
    | [] -> dp

let () =
    let s = read_line () |> Str.split (Str.regexp "") in
    let t = read_line () |> Str.split (Str.regexp "") in
    let rec init n =
        if n = 0 then []
        else [] :: 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))
    |> List.rev
    |> String.concat ""
    |> print_endline
