import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class LexigrophicOrder {
public static void main(String[] args) {
String input = "abcd";
boolean loopCond = true;
String lexiographicString = "bacd";
List<Character> list = new ArrayList<Character>(input.length());
for (int i = 0; i < input.length(); i++) {
list.add(input.charAt(i));
}
Collections.sort(list);
int k = 0;
int orderNum = 0;
while (loopCond) {
if (list.size() >= 1) {
for (int i = 0; i < list.size(); i++) {
if (lexiographicString.charAt(k) == list.get(i)) {
orderNum += i * getNum(lexiographicString.length() - k - 1);
list.remove(i);
k++;
break;
}
}
} else {
loopCond = false;
}
}
System.out.println(orderNum+1);
}
private static int getNum(int num) {
int count = 1;
for (int i = 1; i <= num; i++) {
count *= i;
}
return count;
}
}
import java.util.Collections;
import java.util.List;
public class LexigrophicOrder {
public static void main(String[] args) {
String input = "abcd";
boolean loopCond = true;
String lexiographicString = "bacd";
List<Character> list = new ArrayList<Character>(input.length());
for (int i = 0; i < input.length(); i++) {
list.add(input.charAt(i));
}
Collections.sort(list);
int k = 0;
int orderNum = 0;
while (loopCond) {
if (list.size() >= 1) {
for (int i = 0; i < list.size(); i++) {
if (lexiographicString.charAt(k) == list.get(i)) {
orderNum += i * getNum(lexiographicString.length() - k - 1);
list.remove(i);
k++;
break;
}
}
} else {
loopCond = false;
}
}
System.out.println(orderNum+1);
}
private static int getNum(int num) {
int count = 1;
for (int i = 1; i <= num; i++) {
count *= i;
}
return count;
}
}