def permutations(items):
if len(items) == 1:
yield tuple(items)
return
for index, fixed in enumerate(items):
without_fixed = items[:index] + items[index + 1:]
for x in permutations(without_fixed):
yield (fixed, *x)
for p in permutations(list('abcd')):
print(''.join(p))
ZGVmIHBlcm11dGF0aW9ucyhpdGVtcyk6CiAgICBpZiBsZW4oaXRlbXMpID09IDE6CiAgICAgICAgeWllbGQgdHVwbGUoaXRlbXMpCiAgICAgICAgcmV0dXJuCiAgICBmb3IgaW5kZXgsIGZpeGVkIGluIGVudW1lcmF0ZShpdGVtcyk6CiAgICAgICAgd2l0aG91dF9maXhlZCA9IGl0ZW1zWzppbmRleF0gKyBpdGVtc1tpbmRleCArIDE6XQogICAgICAgIGZvciB4IGluIHBlcm11dGF0aW9ucyh3aXRob3V0X2ZpeGVkKToKICAgICAgICAgICAgeWllbGQgKGZpeGVkLCAqeCkKCgpmb3IgcCBpbiBwZXJtdXRhdGlvbnMobGlzdCgnYWJjZCcpKToKICAgIHByaW50KCcnLmpvaW4ocCkp