Husk, 109 bytes
←fS=UḞzḟS=UḞz:∞ø
Explanation
←fS=UḞzfS=UḞz:∞ø
Ḟz:∞ø Transpose the input dropping characters of longer strings
fS=U Ḟ Filter out strings Fold right
z: Zip with duplicatesprepend
← ∞ø TakeInfinite list of empty lists
ḟS=U Find the first onestring orwithout returnduplicates, returns an empty string if none
ḟ Return first value satisfying predicate
= Equal
S U to itself with duplicates removed