<p>You are given a string <code>s</code> that consists of lowercase English letters.</p>

<p>A string is called <strong>special</strong> if it is made up of only a single character. For example, the string <code>&quot;abc&quot;</code> is not special, whereas the strings <code>&quot;ddd&quot;</code>, <code>&quot;zz&quot;</code>, and <code>&quot;f&quot;</code> are special.</p>

<p>Return <em>the length of the <strong>longest special substring</strong> of </em><code>s</code> <em>which occurs <strong>at least thrice</strong></em>, <em>or </em><code>-1</code><em> if no special substring occurs at least thrice</em>.</p>

<p>A <strong>substring</strong> is a contiguous <strong>non-empty</strong> sequence of characters within a string.</p>

<p>&nbsp;</p>
<p><strong class="example">Example 1:</strong></p>

<pre>
<strong>Input:</strong> s = &quot;aaaa&quot;
<strong>Output:</strong> 2
<strong>Explanation:</strong> The longest special substring which occurs thrice is &quot;aa&quot;: substrings &quot;<u><strong>aa</strong></u>aa&quot;, &quot;a<u><strong>aa</strong></u>a&quot;, and &quot;aa<u><strong>aa</strong></u>&quot;.
It can be shown that the maximum length achievable is 2.
</pre>

<p><strong class="example">Example 2:</strong></p>

<pre>
<strong>Input:</strong> s = &quot;abcdef&quot;
<strong>Output:</strong> -1
<strong>Explanation:</strong> There exists no special substring which occurs at least thrice. Hence return -1.
</pre>

<p><strong class="example">Example 3:</strong></p>

<pre>
<strong>Input:</strong> s = &quot;abcaba&quot;
<strong>Output:</strong> 1
<strong>Explanation:</strong> The longest special substring which occurs thrice is &quot;a&quot;: substrings &quot;<u><strong>a</strong></u>bcaba&quot;, &quot;abc<u><strong>a</strong></u>ba&quot;, and &quot;abcab<u><strong>a</strong></u>&quot;.
It can be shown that the maximum length achievable is 1.
</pre>

<p>&nbsp;</p>
<p><strong>Constraints:</strong></p>

<ul>
	<li><code>3 &lt;= s.length &lt;= 50</code></li>
	<li><code>s</code> consists of only lowercase English letters.</li>
</ul>

# A string `s` that consists of lowercase English letters.
# A string is `special` if it is made up of only a single character. (e.g. "ddd", "zz", "f")
# Return the length of the longest special substring of s which occurs at least thrice, or at least -1 if no special substring occurs at least thrice.

# Substring is a contigous non-empty sequence of characters within a string.

# s = "aaaa"


# Stopping conditions:
# < 3 special strings 

class Solution:
    def isSpecialString(self, s: str):
        for i in range(1, len(s)):
            if s[i] != s[i - 1]:
                return False
        return True

    def maximumLength(self, s: str) -> int:
        longestSpecialSubstring = -1
        windowSize = 1
        lastWindowSizeSpecialStringAmount = 3  


        while lastWindowSizeSpecialStringAmount >= 3 and windowSize < len(s):
            i = 0

            windowSizeSpecialSubStrings = {}
            maximumSubstringCount = 0
            while i + windowSize <= len(s):
                currentSubString = s[i:i + windowSize]
                if len(currentSubString) == 1 or (self.isSpecialString(currentSubString)):
                    locationTuple = (i, i + windowSize)
                    if currentSubString in windowSizeSpecialSubStrings.keys():
                        windowSizeSpecialSubStrings[currentSubString].append(locationTuple)
                    else:
                        windowSizeSpecialSubStrings[currentSubString] = [(locationTuple)]
                    maximumSubstringCount = max(len(windowSizeSpecialSubStrings[currentSubString]), maximumSubstringCount)
                i += 1

            if maximumSubstringCount >= 3:
                longestSpecialSubstring = windowSize
            lastWindowSizeSpecialStringAmount = maximumSubstringCount
            windowSizeSpecialStrings = {}
            windowSize += 1
        return longestSpecialSubstring
126