private Map<List<String>, Integer> getScores(String letter, List<List<String>> blocksHavingLetter) {
            Map<List<String>, Integer> scores = new HashMap<>();
            for (List<String> block : blocksHavingLetter) {
                int score = 0;
                List<String> repeat = new ArrayList<>();
                for (String blockLetter : block) {
                    if (!word.contains(blockLetter)) {
                        score += 3;
                        continue;
                    }
                    if (repeat.contains(blockLetter)) {
                        score += 3;
                        continue;
                    }
                    int neededByWord = neededByWord(blockLetter);
                    int available = getBlocksContainingLetter(blockLetter).size();
                    if (blockLetter.equals(letter)) {
                        if (neededByWord == available) {
                            score += 1000;
                        } else if (neededByWord < available) {
                            score += available - neededByWord;
                        }
                    } else {
                        if (neededByWord == available) {
                            score -= 1000;
                        } else if (neededByWord < available) {
                            score += available - neededByWord;
                        }
                    }
                    repeat.add(blockLetter);
                }
                scores.put(block, score);
            }
            return scores;
        }