import java.util.Arrays;
import java.util.Scanner;
public class Main
{
public static void main
(String[] args
) {
Scanner sc
= new Scanner
(System.
in); System.
out.
println("Enter the string:"); char[] c = s.toCharArray();
System.
out.
println("Here are all the permutations:"); Main.c = c;
count = 0;
permutation(0);
System.
out.
println("Number of permutations = " + count
); }
static char[] c;
static int count;
static void swap(int pos1, int pos2)
{
char temp = c[pos1];
c[pos1] = c[pos2];
c[pos2] = temp;
}
public static void permutation(int start)
{
if (start == c.length)
{
count++;
}
for (int i = start; i < c.length; i++)
{
if (i == start || (c[i] != c[i-1] && c[i] != c[start]))
{
swap(start, i);
permutation(start + 1);
swap(start, i);
}
}
}
}
aW1wb3J0IGphdmEudXRpbC5BcnJheXM7CmltcG9ydCBqYXZhLnV0aWwuU2Nhbm5lcjsKCnB1YmxpYyBjbGFzcyBNYWluCnsKICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykKICAgewogICAgICBTY2FubmVyIHNjID0gbmV3IFNjYW5uZXIoU3lzdGVtLmluKTsKICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJFbnRlciB0aGUgc3RyaW5nOiIpOwogICAgICBTdHJpbmcgcyA9IHNjLm5leHRMaW5lKCk7CiAgICAgIGNoYXJbXSBjID0gcy50b0NoYXJBcnJheSgpOwogICAgICBBcnJheXMuc29ydChjKTsKCiAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiSGVyZSBhcmUgYWxsIHRoZSBwZXJtdXRhdGlvbnM6Iik7CiAgICAgIE1haW4uYyA9IGM7CiAgICAgIGNvdW50ID0gMDsKICAgICAgcGVybXV0YXRpb24oMCk7CiAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiTnVtYmVyIG9mIHBlcm11dGF0aW9ucyA9ICIgKyBjb3VudCk7CiAgIH0KCiAgIHN0YXRpYyBjaGFyW10gYzsKICAgc3RhdGljIGludCBjb3VudDsKICAgCiAgIHN0YXRpYyB2b2lkIHN3YXAoaW50IHBvczEsIGludCBwb3MyKQogICB7CiAgICAgIGNoYXIgdGVtcCA9IGNbcG9zMV07CiAgICAgIGNbcG9zMV0gPSBjW3BvczJdOwogICAgICBjW3BvczJdID0gdGVtcDsKICAgfQoKICAgcHVibGljIHN0YXRpYyB2b2lkIHBlcm11dGF0aW9uKGludCBzdGFydCkKICAgewogICAgICBpZiAoc3RhcnQgPT0gYy5sZW5ndGgpCiAgICAgIHsKICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKGMpOwogICAgICAgICBjb3VudCsrOwogICAgICB9CgogICAgICBmb3IgKGludCBpID0gc3RhcnQ7IGkgPCBjLmxlbmd0aDsgaSsrKQogICAgICB7CiAgICAgICAgIGlmIChpID09IHN0YXJ0IHx8IChjW2ldICE9IGNbaS0xXSAmJiBjW2ldICE9IGNbc3RhcnRdKSkKICAgICAgICAgewogICAgICAgICAgICBzd2FwKHN0YXJ0LCBpKTsKICAgICAgICAgICAgcGVybXV0YXRpb24oc3RhcnQgKyAxKTsKICAgICAgICAgICAgc3dhcChzdGFydCwgaSk7CiAgICAgICAgIH0KICAgICAgfQogICB9Cn0=