codice:
#include <string>
#include <iostream>
using namespace std;

void Anagramma(string A, string B)
{
	if (A.size() == 0) cout << B << endl;
	else
	{
		string Doppie;
		for (int i = 0; i < A.size(); i++)
		{
			char temp[2];
			temp[0] = A[i]; temp[1] = '\0';
			if (Doppie.find(temp, 0) == string::npos)
			{
				A.erase(i, 1);
				Anagramma(A, B + temp);
				Doppie += temp;
				A.insert(i, temp);
			}
		}
	}
}
int main()
{
	string A;
	cin >> A;
	cout << endl;
	Anagramma(A, "");
}
MAGIA !!! Incoraggiato da Lele ho cercato di migliorare il programma ! Ora questo qui dovrebbe evitare i doppioni.