Can anyone help me figure out this?

This is my code :
Code:
import java.util.Scanner;
class Permutar{
	public static String auxWord;
	public static int[] candidates = null;
	public static void main(String[] args){
		Scanner e = new Scanner(System.in);
		String palavra = e.nextLine();
		auxWord = palavra;
		permutacao(palavra);
		bt();
	}
	public static void bt(){
		candidates = new int[auxWord.length()];
		for (int i = 0; i < auxWord.length(); i++){
			for (int a = 0; a < auxWord.length(); a++){
				candidates[a] = -1;
			}
			candidates[0] = i;
			//System.out.println("oi");
			bt2();
		}
	}
	public static void bt2(){
		if (!accept()) return;
		if (isFull()){
			show();
			//candidates[2] = -1;
			//candidates[1] = -1;
			return;
		}
		for (int i = 0; i < auxWord.length(); i++){
			//System.out.println("oi2");
			if (add(i)){
			showL();
			bt2();
			showL();}
		}
		return;
	}
	public static boolean add(int n){
		int i;
		for (i = 0; i < auxWord.length(); i++){
			if (candidates[i] == -1) break;
		}
		if (i == auxWord.length()){
			return false;
		}else{
			candidates[i] = n;
			return true;
		}
	}
	public static boolean isFull(){
		if (candidates == null) return false;
		for (int i = 0; i < candidates.length; i++){
			if (candidates[i] == -1) return false;
		}
		return true;
	}
	public static void showL(){
		for (int i = 0; i < auxWord.length(); i++){
			System.out.print(candidates[i]+" ");
		}
		System.out.println();
	}
	public static void show(){
		for (int i = 0; i < auxWord.length(); i++){
			System.out.print(auxWord.charAt(candidates[i]));
		}
		System.out.println();
	}
	public static void permutacao(String palavra){
		int quant = palavra.length();
		int valor = 1;
		for (int i = quant; i > 0; i--){
			valor *= i;
		}
		System.out.println("Permutacao de "+palavra+" ("+quant+" elementos). "+quant+"! = "+valor);
	}
	public static boolean accept(){
		for (int j = 0; j < auxWord.length(); j++){
			for (int k = 0; k < auxWord.length(); k++){
				if (j != k && candidates[j] == candidates[k] && candidates[j] != -1 && candidates[k] != -1){
					candidates[k] = -1;
					return false;
				}
			}
		}
		return true;
	}
}