public class AnagramDemo {
static int size;
static char[] arrChar;
static List resultList = new ArrayList<>();
public static void main(String[] args) throws IOException {
System.out.println("enter a word:");
String input = getString();
size = input.length();
arrChar = new char[size];
for (int i = 0; i < size; i++) {
arrChar[i] = input.charAt(i);
}
doAnagram(size);
display();
}
private static void display() {
for (int i = 0; i < resultList.size(); i++) {
System.out.println(i+1 + "." + resultList.get(i));
}
}
private static void doAnagram(int len) {
if (len == 1)
return;
for (int i = 0; i < len; i++) {
doAnagram(len - 1);
if (len == 2)
resultList.add(new String(arrChar));
rotate(len);
}
}
private static void rotate(int size2) {
int j;
int position = size - size2;
char temp = arrChar[position];
for (j = position + 1; j < size; j++) {
arrChar[j - 1] = arrChar[j];
}
arrChar[j - 1] = temp;
}
private static String getString() throws IOException {
InputStreamReader in = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(in);
String str = br.readLine();
return str;
}
}