import Data.List
ev s = map (\x -> (x, elemIndices x s)) $ nub s
unifyAux [] [] substs = Just substs
unifyAux (x:xs) (y:ys) substs = if snd x == snd y then unifyAux xs ys ((fst x, fst y) : substs) else Nothing
unifyAux _ _ _ = Nothing
unify s1 s2 = unifyAux (ev s1) (ev s2) []