using System;
using System.Collections.Generic;
public class Program
{
List<char[]> l;
Program()
{
l = new List<char[]>();
}
void swap(ref char a, ref char b)
{
if (a == b) return;
char tmp;
tmp = b;
b = a;
a = tmp;
}
public void go(char[] list, int k, int m)
{
int i;
if (k == m)
{
Console.WriteLine(list);
//if(!(l.Contains(list)))
l.Add(list);
}
else
for (i = k; i <= m; i++)
{
swap(ref list[k], ref list[i]);
go(list, k + 1, m);
swap(ref list[k], ref list[i]);
}
}
public void print_list()
{
foreach (char[] a in l)
Console.WriteLine(a);
}
static void Main(string[] args)
{
Console.Write("input= ");
string s = Console.ReadLine();
Program p = new Program();
char[] c = s.ToCharArray();
Console.WriteLine("output= ");
p.go(c,0,(c.Length-1));
p.print_list();
Console.ReadKey();
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsKcHVibGljIGNsYXNzIFByb2dyYW0KICAgIHsKICAgICAgICBMaXN0PGNoYXJbXT4gbDsKICAgICAgICBQcm9ncmFtKCkKICAgICAgICB7CiAgICAgICAgICAgIGwgPSBuZXcgTGlzdDxjaGFyW10+KCk7CiAgICAgICAgfQogICAgICAgIHZvaWQgc3dhcChyZWYgY2hhciBhLCByZWYgY2hhciBiKQogICAgICAgIHsKICAgICAgICAgICAgaWYgKGEgPT0gYikgcmV0dXJuOwogICAgICAgICAgICBjaGFyIHRtcDsKICAgICAgICAgICAgdG1wID0gYjsKICAgICAgICAgICAgYiA9IGE7CiAgICAgICAgICAgIGEgPSB0bXA7CiAgICAgICAgfQogICAgICAgIHB1YmxpYyB2b2lkIGdvKGNoYXJbXSBsaXN0LCBpbnQgaywgaW50IG0pCiAgICAgICAgewogICAgICAgICAgICBpbnQgaTsKICAgICAgICAgICAgaWYgKGsgPT0gbSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgQ29uc29sZS5Xcml0ZUxpbmUobGlzdCk7CiAgICAgICAgICAgICAgICAvL2lmKCEobC5Db250YWlucyhsaXN0KSkpCiAgICAgICAgICAgICAgICBsLkFkZChsaXN0KTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICBmb3IgKGkgPSBrOyBpIDw9IG07IGkrKykKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBzd2FwKHJlZiBsaXN0W2tdLCByZWYgbGlzdFtpXSk7CiAgICAgICAgICAgICAgICAgICAgZ28obGlzdCwgayArIDEsIG0pOwogICAgICAgICAgICAgICAgICAgIHN3YXAocmVmIGxpc3Rba10sIHJlZiBsaXN0W2ldKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgfQogICAgICAgIHB1YmxpYyB2b2lkIHByaW50X2xpc3QoKQogICAgICAgIHsKCiAgICAgICAgICAgIGZvcmVhY2ggKGNoYXJbXSBhIGluIGwpCiAgICAgICAgICAgICAgICBDb25zb2xlLldyaXRlTGluZShhKTsKICAgICAgICB9CiAgICAgICAgc3RhdGljIHZvaWQgTWFpbihzdHJpbmdbXSBhcmdzKQogICAgICAgIHsKICAgICAgICAgICAgQ29uc29sZS5Xcml0ZSgiaW5wdXQ9ICIpOwogICAgICAgICAgICBzdHJpbmcgcyA9IENvbnNvbGUuUmVhZExpbmUoKTsKICAgICAgICAgICAgUHJvZ3JhbSBwID0gbmV3IFByb2dyYW0oKTsKICAgICAgICAgICAgY2hhcltdIGMgPSBzLlRvQ2hhckFycmF5KCk7CiAgICAgICAgICAgIENvbnNvbGUuV3JpdGVMaW5lKCJvdXRwdXQ9ICIpOwogICAgICAgICAgICBwLmdvKGMsMCwoYy5MZW5ndGgtMSkpOwogICAgICAgICAgICBwLnByaW50X2xpc3QoKTsKICAgICAgICAgICAgQ29uc29sZS5SZWFkS2V5KCk7CiAgICAgICAgICAgIAogICAgICAgIH0KICAgIH0=