import java.util.Arrays;
import java.util.LinkedList;
import java.util.List;
public class PermuteSort {
// private static final Gson gson = new Gson();
static String swap(String str, int i, int j) {
char ch;
char[] array = str.toCharArray();
ch = array[i];
array[i] = array[j];
array[j] = ch;
return String.valueOf(array);
}
// Function to print all the permutations of the string
static void permute(String str, int low, int high) {
if (low == high) {
System.out.println(str);
}
int i;
for (i = low; i <= high; i++) {
str = swap(str, low, i);
permute(str, low + 1, high);
str = swap(str, low, i);
}
}
static void swap(List<Character> chars, int i, int j) {
char ch;
ch = chars.get(i);
chars.set(i, chars.get(j));
chars.set(j, ch);
}
static void permute(List<Character> chars, int low, int high) {
if (low == high) {
System.out.println(Arrays.toString(chars.toArray()));
}
int i;
for (i = low; i <= high; i++) {
swap(chars, low, i);
permute(chars, low + 1, high);
swap(chars, low, i);
}
}
// Function to read user input
// public static void main(String[] args) {
//// BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
// String str = "dfgpvwz";
//
// System.out.println("All the possible permutations of " + str + "are");
// permute(str, 0, str.length() - 1);
// }
public static void main(String[] args) {
String s = "dfgpvwz";
List<Character> chars = new LinkedList();
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
chars.add(c);
}
permute(chars, 0, chars.size() - 1);
// int k = chars.size();
// List<Character> prefix = new LinkedList();
// permute(k, chars, prefix);
}
}