class myList(list):
    def short(self):
        minlen = min(map(len, self))
        return myList( filter(lambda x: len(x) == minlen, self) )

    def __add__(self, other):
        mix = [s.union(o) for s in self for o in other]
        return myList( map(set, {*map(tuple, mix)}) )
        

    def __radd__(self, other):
        return self

l1 = myList( [{1, 2, 3}, {3}, {4, 5}] )
l2 = myList( [{1, 2, 3}, {6, 7}] )
l3 = myList( [{4}] )

mix = sum([l1, l2, l3])
print(mix.short())

# or
print((l1 + l2 + l3).short())
