private Set<Integer> intersect(HangmanGame game) {
        Set<Integer> bestGuessIndexes = new HashSet<Integer>();
        for (int i=0; i<words.size(); i++) bestGuessIndexes.add(i);

        int count = 0;
        char[] gamestate = game.getGuessedSoFar().toCharArray();
        for (char ch: gamestate) {
            if (ch != HangmanGame.MYSTERY_LETTER) count++;
        }

        if (count == 1) return bestGuessIndexes;

        for (int i=0; i<gamestate.length; i++) {
            if (gamestate[i] == HangmanGame.MYSTERY_LETTER) continue;
            Set<Integer> lookupIndexes = positionIndexer.lookup(gamestate[i], i);
            ImmutableSet<Integer> common = Sets.intersection(bestGuessIndexes, lookupIndexes).immutableCopy();

            bestGuessIndexes.clear();
            bestGuessIndexes.addAll(common);
        }

        return bestGuessIndexes;
    }