import java.io.IOException;
import java.util.HashSet;
public class Main {
public static void main(String[] args) throws IOException {
System.out.println(solution("17"));
System.out.println(solution("011"));
}
/*
* 한자리 숫자가 적힌 종이 조각이 있음
* 흩어진 종이 조각을 붙여 소수를 몇개 만들 수 있는가?
* 최대 7자리 수 소수
* 최대 7! 가지수 이므로 모두 해본다
* 그리고 소수인지 판단하며 된다.
*/
static char[] chs;
static boolean[] visited;
static HashSet<Integer> set;
public static int solution(String numbers) {
int len = numbers.length();
visited = new boolean[len];
set = new HashSet<>();
for(int i=1; i<=len; i++) {
chs = new char[i];
perm(0, i, len, numbers);
}
return set.size();
}
public static void perm(int start, int r, int n, String numbers) {
if(start == r) {
// chs[0]이 0이면 안됨
if(chs[0] == '0') return;
// 숫자로 변환
int num = Integer.parseInt(String.valueOf(chs));
if(isPrimeNumber(num)) {
set.add(num);
}
return;
}
for(int i=0; i<n; i++) {
if(visited[i]) continue;
visited[i] = true;
chs[start] = numbers.charAt(i);
perm(start+1, r, n, numbers);
visited[i] = false;
}
}
public static boolean isPrimeNumber(int num) {
if(num == 1) return false;
for(int i=2; i<=Math.sqrt(num); i++) {
if(num % i == 0) return false;
}
return true;
}
}