変数は、目的の結果ではなく "[ ]" を返します。
S = set(['a', 'b','d','z','x','y'])
collect = set()
step = set([''])
while step:
step = set(a+b for a in step for b in S if len(a+b) == 6)
collect |= step
print sorted(collect)
また、これをセットの代わりに組み合わせを再生するループにするにはどうすればよいですか?