def reducir_cadena(cadena):
    """Reduce una cadena de caracteres según las reglas del problema.
 
    Args:
        cadena: La cadena de caracteres a reducir.
 
    Returns:
        La longitud mínima de la cadena reducida.
    """
    # Validación de longitud de cadena
    if len(cadena) > 5 * 1000:
        raise ValueError("La longitud de la cadena no debe exceder 5000 caracteres.")
    
    pila = []
    
    for c in cadena:
        if c == '(':
            pila.append(c)  # Agregar '(' a la pila
        elif c == ')':
            # Si hay un '(' en la pila, lo eliminamos
            if pila and pila[-1] == '(':
                pila.pop()  # Eliminamos el par de ()
            else:
                pila.append(c)  # Agregamos ')' si no se puede eliminar
        elif c == '?':
            # Al encontrar un '?', tratamos de usarlo para balancear
            if pila and (pila[-1] == '(' or pila[-1] == '?'):
                # Usar '?' para eliminar '(' o para eliminar otro '?'
                pila.pop()  # Eliminar un '(' o un '?' balanceado
            else:
                # Usamos '?' como un '('
                pila.append('(')

    # Al final, la longitud de la pila representa los caracteres no eliminados.
    return len(pila)

# Ejemplo de uso:
cadena = "??"
resultado = reducir_cadena(cadena)
print("Longitud mínima:", resultado)  # Imprimirá: Longitud mínima: 0

cadena = "())?"
resultado = reducir_cadena(cadena)
print("Longitud mínima:", resultado)  # Imprimirá: Longitud mínima: 2

# Prueba con una cadena larga (sin exceder el límite)
cadena_larga = "("*1000 + "?"*1000 + ")"*1000
resultado_largo = reducir_cadena(cadena_larga)
print("Longitud mínima para cadena larga:", resultado_largo)  # Resultado variable según la cadena

# Prueba con una cadena que excede el límite
try:
    cadena_excedida = "?" * 5001  # Más de 5000 caracteres
    reducir_cadena(cadena_excedida)
except ValueError as e:
    print(e)  # Imprimirá: La longitud de la cadena no debe exceder 5000 caracteres.

# Complejidad algorítmica: O(n)
