public void Solve() {
        List<Integer> primes = Euler.GetPrimes(_max);

        for (Iterator<Integer> it = primes.iterator(); it.hasNext();) {
            Integer prime = it.next();
            String primeString = prime.toString();

            for (int numberOfDigits = 1; numberOfDigits < primeString.length(); numberOfDigits++) {
                List<String> enumeration = Enumerate(primeString, "", 0, numberOfDigits);

                for (Iterator<String> it1 = enumeration.iterator(); it1.hasNext();) {
                    String candidate = it1.next();
                    String output = "";

                    int primeCount = 0;
                    for (int digit = 0; digit < 10; digit++) {
                        if (candidate.startsWith("x") && digit == 0) {
                            continue;
                        }

                        int primeCandidate = Integer.parseInt(candidate.replaceAll("x", Integer.toString(digit)));
                        if (0 <= Collections.binarySearch(primes, primeCandidate)) {
                            primeCount++;
                            output += primeCandidate + ", ";
                        }
                    }

                    if (primeCount == _familyCount) {
                        System.out.println("Result=" + output);
                        return;
                    }
                }
            }
        }
    }