boolean hasProgression(int requiredWordLength) {
        if (requiredWordLength <= word.length()) {
            if (requiredWordLength == 2) {
                winningWord = word.substring(0, 2);
                hasProgression = true;
                return hasProgression;
            } else {
                int ratio = (word.charAt(lastLetterIndex)
                        - word.charAt(lastLetterIndex - 1) + 26) % 26;
                int nextRatio;
                int winningWordLength = 2;
                int startLetterIndex = lastLetterIndex - 1;
                while (winningWordLength < requiredWordLength
                        && lastLetterIndex < word.length() - 1) {
                    lastLetterIndex++;
                    hasProgression = true;
                    nextRatio = (word.charAt(lastLetterIndex)
                            - word.charAt(lastLetterIndex - 1) + 26) % 26;
                    if (nextRatio != ratio) {
                        ratio = nextRatio;
                        startLetterIndex = lastLetterIndex - 1;
                        hasProgression = false;
                        winningWordLength = 2;
                    } else {
                        winningWordLength = lastLetterIndex - startLetterIndex
                                + 1;
                    }
                }
                if (hasProgression) {
                    winningWord = word.substring(lastLetterIndex
                            - requiredWordLength + 1, lastLetterIndex + 1);
                } else {
                    hasProgression = false;
                    return hasProgression;
                }
            }
        } else {
            hasProgression = false;
            return hasProgression;
        }
        hasProgression = true;
        return hasProgression;
    }