import java.util.HashSet;
class Solution {
    static HashSet<Integer> primes;
    static boolean[] visited;
    static int N;
    public int solution(String numbers) {
        N = numbers.length();
        primes = new HashSet<>();
        visited = new boolean[N];
        makeNumber("",numbers);
        return primes.size();
    }
    static void makeNumber(String s,String numbers){
        if(s.length()>N) return;
        if(s.length()!=0){
            int num = Integer.parseInt(s);
            if(isPrime(num)) primes.add(num);
        }
        
        for(int i=0; i<N; i++){
            if(visited[i]==false){
                visited[i]=true;
                makeNumber(s+numbers.charAt(i),numbers);
                visited[i]=false;
            }
        }
    }
    static boolean isPrime(int n){
        if(n<=1) return false;
        for(int i=2; i<=Math.sqrt(n); i++){
            if(n%i==0) return false;
        }
        return true;
    }
}

+ Recent posts