Test Case #9 is failed . Please help 😥 Trying since 3 hours

def multiply_optimized(poly1, poly2):
    if len(poly1) == 0 or len(poly2) == 0:
        return []
    
    if len(poly1) == 1:
        if poly1[0] == 0:
            return [0]
        else:
            return [poly1[0] * i for i in poly2]
    elif len(poly2) == 1:
        if poly2[0] == 0:
            return [0]
        else:
            return [poly2[0] * i for i in poly1]
    
    n = max(len(poly1),len(poly2))
    
    if n%2 != 0:
        n = n -1
    A, B = split(poly1,poly2)
    
    Y = multiply_optimized(add(A[0], A[1]), add(B[0], B[1]))
    U = multiply_optimized(A[0], B[0])
    Z = multiply_optimized(A[1], B[1])
    Y = increase_exponent(subtract(Y, add(U, Z)), n //2)
    Z = increase_exponent(Z, n)
    result = add(Y, add(U, Z))
    remove_zeros(result)
    return result