### strongPasswordChecker 
from typing import *
def f_gold(password: str) -> int:
    def countTypes(s):
        a = b = c = 0
        for ch in s:
            if ch.islower():
                a = 1
            elif ch.isupper():
                b = 1
            elif ch.isdigit():
                c = 1
        return a + b + c
    types = countTypes(password)
    n = len(password)
    if n < 6:
        return max(6 - n, 3 - types)
    if n <= 20:
        replace = cnt = 0
        prev = '~'
        for curr in password:
            if curr == prev:
                cnt += 1
            else:
                replace += cnt // 3
                cnt = 1
                prev = curr
        replace += cnt // 3
        return max(replace, 3 - types)
    replace = cnt = 0
    remove, remove2 = n - 20, 0
    prev = '~'
    for curr in password:
        if curr == prev:
            cnt += 1
        else:
            if remove > 0 and cnt >= 3:
                if cnt % 3 == 0:
                    remove -= 1
                    replace -= 1
                elif cnt % 3 == 1:
                    remove2 += 1
            replace += cnt // 3
            cnt = 1
            prev = curr
    if remove > 0 and cnt >= 3:
        if cnt % 3 == 0:
            remove -= 1
            replace -= 1
        elif cnt % 3 == 1:
            remove2 += 1
    replace += cnt // 3
    use2 = min(replace, remove2, remove // 2)
    replace -= use2
    remove -= use2 * 2
    use3 = min(replace, remove // 3)
    replace -= use3
    remove -= use3 * 3
    return n - 20 + max(replace, 3 - types)