Cálculo de todas las combinaciones posibles de una cuerda, con un toque

Estoy tratando de permitir que un usuario ingrese texto en un cuadro de texto, y que el programa genere todas las combinaciones posibles, excepto con un mínimo de 3 caracteres y un máximo de 6. No necesito palabras inútiles como 'como', 'a', 'i', 'to', etc desordenando mi matriz. También comprobaré cada combinación contra un diccionario para asegurarme de que sea una palabra real.

Tengo el diccionario completo (minuciosamente generado,aquí hay un enlace a él a cambio (ADVERTENCIA: tiempo de carga gigantesco (para mí)!)

De todos modos, si el usuario ingresa 'ABCDEF' (sin ningún orden en particular), ¿cómo podría generar, por ejemplo:

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

etc ... TODAS las combinaciones posibles, no importa el orden? Entiendo que hay una cantidad ridícula de estas combinaciones, pero solo necesita ser calculada una vez, así que no estoy muy preocupado por eso.

He encontrado ejemplos de código para encontrar de forma recursiva combinaciones (no permutaciones, no las necesito) de solo la cadena de ancho fijo (ABCDEF, ABCDFE ... ACDBFE, etc.). No hacen lo que necesito, y no tengo ni la menor idea de por dónde empezar con este proyecto.

Esto no es tarea, comenzó como un proyecto personal mío que ha crecido para controlar mi vida por un problema tan simple ... ¡No puedo creer que no pueda resolver esto!

Respuestas a la pregunta(4)

Su respuesta a la pregunta