scs :: Eq a => [a] -> [a] -> [a] scs [] ys = ys scs xs [] = xs scs xss@(x:xs) yss@(y:ys) | x == y = x : scs xs ys | otherwise = ws where us = scs xs yss vs = scs xss ys ws | length us < length vs = x : us | otherwise = y : vs main = putStrLn $ scs "abcbdab" "bdcaba"