let longer s1 s2 =
    if String.length s1 >= String.length s2
    then s1
    else s2

let update t_i s dp =
    let rec update_sub s dp dp_i_j1 dp_i1_j1 accum =
        match s, dp with
        | s_j :: s', dp_i1_j :: dp' ->
            let dp_i_j =
                if s_j = t_i
                then dp_i1_j1 ^ s_j
                else longer dp_i1_j dp_i_j1
            in update_sub s' dp' dp_i_j dp_i1_j (dp_i_j :: accum)
        | _ -> accum
    in List.rev @@ update_sub s 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))
    |> print_endline
