#include <iostream>
#include <string.h>
using namespace std;
void Swap(char Str[],int m,int n)
{
char temp=Str[m];
Str[m]=Str[n];
Str[n]=temp;
}
bool Match(char Str[],int i,int j)
{
if(i == j)
return false;
else
for(;i<j;i++)
if(Str[i]==Str[j])
return true;
return false;
}
void Permute(char Str[],int m,int n)
{
if(m>=n){cout<<Str<<endl;return;}
for(int i=m;i<=n;i++)
{ if(!Match(Str,m,i))
{
Swap(Str,i,m);
Permute(Str,m+1,n);
Swap(Str,i,m);
}
}
}
int main()
{
char Str[]="AABAAC";
Permute(Str,0,strlen(Str)-1);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgp2b2lkIFN3YXAoY2hhciBTdHJbXSxpbnQgbSxpbnQgbikKewpjaGFyIHRlbXA9U3RyW21dOwpTdHJbbV09U3RyW25dOwpTdHJbbl09dGVtcDsKfQpib29sIE1hdGNoKGNoYXIgU3RyW10saW50IGksaW50IGopCnsKICAgIGlmKGkgPT0gaikgCiAgICAJCXJldHVybiBmYWxzZTsKCQllbHNlCgkJCWZvcig7aTxqO2krKykKCQkJCWlmKFN0cltpXT09U3RyW2pdKQoJCQkJCXJldHVybiB0cnVlOwoJCXJldHVybiBmYWxzZTsKCQp9CnZvaWQgUGVybXV0ZShjaGFyIFN0cltdLGludCBtLGludCBuKQp7CiAgICBpZihtPj1uKXtjb3V0PDxTdHI8PGVuZGw7cmV0dXJuO30KICAgIGZvcihpbnQgaT1tO2k8PW47aSsrKQogICAgeyAgaWYoIU1hdGNoKFN0cixtLGkpKQogICAgICAgewogICAgICAgIFN3YXAoU3RyLGksbSk7CiAgICAgICAgUGVybXV0ZShTdHIsbSsxLG4pOwogICAgICAgIFN3YXAoU3RyLGksbSk7CiAgICAgICB9CiAgICAKICAgIH0KfQoKaW50IG1haW4oKQp7CiAgY2hhciBTdHJbXT0iQUFCQUFDIjsKICBQZXJtdXRlKFN0ciwwLHN0cmxlbihTdHIpLTEpOwogICAKICAgcmV0dXJuIDA7Cn0K