Encontrar todas las permutaciones únicas de una cadena sin generar duplicados

Encontrar todas las permutaciones de una cadena es por un conocido algoritmo Steinhaus – Johnson – Trotter. Pero si la cadena contiene los caracteres repetidos como
AABB,
then las posibles combinaciones únicas serán 4! / (2! * 2!) = 6

Una forma de lograr esto es que podemos almacenarlo en una matriz más o menos y luego eliminar los duplicados.

¿Hay alguna forma más simple de modificar el algoritmo Johnson, para que nunca generemos las permutaciones duplicadas? (De la manera más eficiente)

Respuestas a la pregunta(10)

Su respuesta a la pregunta