И да, я догадываюсь что используемый здесь алгорим - г#вно, но его просьба обсуждать в последнюю очередь.
# -*- coding: utf-8 -*-
import random
myWord = str(raw_input("Напечатайте любое слово (ENG) и нажмите 'Enter'...\n"))
myArr = list(myWord)
wdLength = len(myWord)
finArr = []
mainCount = 0
combs = 1
for num1 in range(1, wdLength + 1):
combs = combs * num1
print "Вариантов доступно: " + str(combs) + "\nВариантов найдено: "
while mainCount < combs:
counter = 1
anagram = ""
myArr = list(myWord)
while counter <= wdLength:
letter = myArr[random.randint(0, len(myArr) - 1)]
myArr.remove(letter)
anagram = anagram + letter
counter += 1
if anagram in finArr:
mainCount -= 1
else:
finArr.append(anagram)
print str(len(finArr)) + ",",
mainCount += 1
finArr.sort()
finStr = ""
for element in finArr:
if finArr.index(element) % 10 == 0:
finStr = finStr + "\n"
finStr = finStr + element + "," + " "
finStr = finStr[:-2] + "."
print finStr
myFile = open(myWord + ".txt", "w")
myFile.write("Введённое слово: " + myWord + "\nКоличество возможных комбинаций: " + str(combs) + "\n" + finStr)
myFile.close()