Encontrando todas as permutações exclusivas de uma string sem gerar duplicatas

Encontrar todas as permutações de uma string é de um conhecido algoritmo Steinhaus – Johnson – Trotter. Mas se a string contiver caracteres repetidos como
AABB,
; as combinações únicas possíveis serão 4! / (2! * 2!) = 6

ma maneira de conseguir isso é armazená-lo em uma matriz ou mais e depois remover as duplicata

Existe uma maneira mais simples de modificar o algoritmo Johnson, para que nunca geremos as permutações duplicadas. (Da maneira mais eficiente)

questionAnswers(10)

yourAnswerToTheQuestion