Расчет всех возможных комбинаций строки с поворотом

Я пытаюсь разрешить пользователю вводить текст в текстовое поле и заставить программу генерировать все возможные комбинации, кроме как минимум из 3 символов и максимум из 6. Мне не нужны бесполезные слова, такие как «как», 'a', 'i', 'to' и т. д. загромождают мой массив. Я также проверю каждую комбинацию по словарю, чтобы убедиться, что это настоящее слово.

У меня есть полный словарь (кропотливо сгенерированный,вот ссылка на него взамен (ВНИМАНИЕ: гигантское время загрузки (для меня)!)

В любом случае, если пользователь вводит «ABCDEF» (без определенного порядка), как я могу сгенерировать, например:

'ABC'
'BAC'
'CAB'
...
'ABD'
'ABE'
'ABF'

и т.д ... КАЖДАЯ возможная комбинация, независимо от того, какой заказ? Я понимаю, что таких комбинаций смешно, но их нужно рассчитывать только один раз, поэтому я не слишком беспокоюсь об этом.

Я нашел примеры кода для рекурсивного поиска комбинаций (не перестановок, они мне не нужны) только строки фиксированной ширины (ABCDEF, ABCDFE ... ACDBFE и т. Д.). Они не делают то, что мне нужно, и я понятия не имею, с чего начать этот проект.

Это не домашняя работа, это началось как мой личный проект, который вырос, чтобы завладеть моей жизнью из-за такой простой проблемы ... Я не могу поверить, что не могу понять это!

Ответы на вопрос(4)

Ваш ответ на вопрос