import time
import re

from memory_profiler import profile


stepan_says = "aahahaaaaaaaaaaajkfldhahadofofahahlsaaadklsdhahaaa" * 2000


#with open("stepan_says.txt", "w", encoding="utf-8") as f:
    #f.write(stepan_says)

# @profile
def loop(inp):
    m, cm = 0, 0

    pch = ''

    for i, ch in enumerate(inp):
        if i == 0:
            pch = ch
            if ch in ('a', 'h'):
                cm += 1
            continue

        if i == 1:
            if (pch + ch) in ('aa', 'hh'):
                cm = 0
                pch = ch
                continue

        if (pch + ch) in ('ah', 'ha'):
            cm += 1
            pch = ch
        else:
            if cm > m:
                m = cm
            cm = 0

    if cm > m:
        m = cm

    return m

@profile
def regex(inp):
    return len(
        sorted(
            filter(
                lambda x: abs(x.count("a") - x.count("h")) <= 1,
                re.findall('(?!aa|hh)([ah]{1,})(?<!aa|hh)', stepan_says)
            ), key=lambda x: len(x)
        )[-1]
    )


start = time.monotonic()

regex(stepan_says)

finish = time.monotonic()
# print(f'Loop: {finish-start:.5f}')
# print(f'Regex: {finish-start:.5f}')
