def checkAB(s):
    if len(s) == 0 or s[0] != 'a':
        return False

    def loop(val):
        if len(val) == 0:
            return True
        if val[0] == 'a':
            return loop(val[1:])
        if len(val) > 2 and val[0] == 'b' and val[1] == 'b' and val[2] == 'b':
            return False
        if len(val) == 1 and val[0] == 'b':
            return False
        if val[0] == 'b' and val[1] == 'b':
            return loop(val[2:])
        else:
            return False
    return loop(s)

strings = [
    "a",
    "aaa",
    "abb",
    "abba",
    "abbabb",
    "abbabba",
    "aaabbaabb",
    "abbabbabbaaa",
    "abbaaaaabbaaaaababbbbabbababababbba"
    "aba",
    "baba",
    "baabb",
    "aabbbaa",
    "abbbb",
    "abbb",
    "abbbbbb",
    "aabbabbbb",
    "aabbabbab",
    "ababab",
    "bba",
    "ababab",
    "bba",
    "aaab",
    "aaabbb",
    "aaabbbb",
    "abbbbbbb"
]

for s in strings:
    print(f"{s} --> {checkAB(s)}")

