Generate a Portmantout!
Python 2, 204 202 bytes



def f(l,s=''):
 if all(w in s for w in l):return s
 for i,w in enumerate(l):
&#9;a=next((s+w[i:]for i in range(len(w)-1,0,-1)if s[-i:]==w[:i]),0)if s else w;x=a and f(l[:i]+l[i+1:]+[l[i]],a)
&#9;if x:return x


Try it online!



Saved


-2 bytes, thanks to recursive