Что-то туго идёт... Но есть такое предположение, что число искомых автоморфизмов столько же, сколько и перестановок множества

, т. е.

. Не знаю, как это строго объяснить, но идея такая: если мы будем учитывать порядок элементов в множествах (т. е. заменим множества на кортежи) и у нас имеется алгоритм, который будет из кортежа

делает кортеж

, то если мы переставим элементы в

, то кортеж

тоже изменится. Автоморфизм получается так: первый элемент исходного кортежа

переводится в первый элемент "переставленного", второй элемент -- во второй элемент и т. д.
(Я плохо умею выражать свои мысли словами, поэтому пример)
Код:
Prelude> let p [] = [[]]; p (x:xs) = map (x:) (p xs) ++ p xs;
Prelude> p "abc"
["abc","ab","ac","a","bc","b","c",""]
Prelude> p "bca"
["bca","bc","ba","b","ca","c","a",""]
Т. е. перестановке

соответсвует автоморфизм

такой, что
