Calculando todas as combinações possíveis de uma string, com uma torção

Estou tentando permitir que um usuário insira texto em uma caixa de texto e faça com que o programa gere todas as combinações possíveis, exceto com um mínimo de 3 caracteres e um máximo de 6. Não preciso de palavras inúteis como 'as', 'a', 'i', 'to', etc bagunçando minha matriz. Também verificarei cada combinação com um dicionário para garantir que seja uma palavra real.

Eu tenho o dicionário completo (meticulosamente gerado,aqui está um link para isso em troca (ATENÇÃO: tempo de carregamento gigantesco (para mim)!)

De qualquer forma, se o usuário digitar 'ABCDEF' (em nenhuma ordem específica), como eu poderia gerar, por exemplo:

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

etc ... CADA combinação possível, não importa que ordem? Eu entendo que há uma quantidade ridícula dessas combinações, mas isso só precisa ser calculado uma vez, então não estou muito preocupado com isso.

Eu encontrei exemplos de código para encontrar recursivamente combinações (não permutações, eu não preciso disso) de apenas a cadeia de largura fixa (ABCDEF, ABCDFE ... ACDBFE, etc). Eles não fazem o que eu preciso, e eu não tenho a menor idéia sobre onde começar com este projeto.

Isso não é lição de casa, começou como um projeto pessoal meu que cresceu para dominar a minha vida por causa de um problema tão simples ... Eu não posso acreditar que não consigo entender isso!

questionAnswers(4)

yourAnswerToTheQuestion