### findMinStep 
import re
from collections import deque
from typing import *
def f_gold(board: str, hand: str) -> int:
    def remove(s):
        while len(s):
            next = re.sub(r'B{3,}|G{3,}|R{3,}|W{3,}|Y{3,}', '', s)
            if len(next) == len(s):
                break
            s = next
        return s
    visited = set()
    q = deque([(board, hand)])
    while q:
        state, balls = q.popleft()
        if not state:
            return len(hand) - len(balls)
        for ball in set(balls):
            b = balls.replace(ball, '', 1)
            for i in range(1, len(state) + 1):
                s = state[:i] + ball + state[i:]
                s = remove(s)
                if s not in visited:
                    visited.add(s)
                    q.append((s, b))
    return -1