Todas as combinações possíveis de uma determinada sequência

Preciso encontrar todas as combinações possíveis de uma determinada string, de um comprimento mínimo para um comprimento máximo.

interface allCombos(string: String, min: Number, max:Number): Array {}

Portanto, se minha string de entrada for‘abcde’, e meu comprimento mínimo é 3, desejo que o resultado seja:

Para comprimento 3:

[‘abc’, ‘abd’, ‘abe’, ‘acd’, ..., ‘bcd’, ‘bce’, ..., ‘eda’, ...]

Concatenado com comprimento 4:

[‘abcd’, ‘abdc’, ‘acdb’, ‘acbd’, …etc]

Concatenado com todas as combinações possíveis com comprimento até o parâmetro max. O que não deve ser maior que o comprimento da palavra de entrada.

Comecei a pensar que todas as combinações possíveis seriam∑(3! + 4! + … + n!). Mas vi que estava errado porque, para cada subconjunto de comprimento, existem muitas combinações para o mundo inteiro (por exemplo, combinações de 3 comprimentos de uma sequência de 6 letras).

A comunidade pode me ajudar com esse problema?

A solução pode estar emJavaScript, Python ou mesmo pseudo-código.

Editar

Pelo bem do conhecimento. Alguém poderia me responder, a fórmula que descreve o tamanho do resultado neste caso? Eu sei que não é∑(3! + 4! + … + n!).

questionAnswers(4)

yourAnswerToTheQuestion