def kmult(x, y):
    """Return product of x * y with Karatsuba magic."""
    if x < 0 and y < 0:
        print('Numbers must be positive!')
        return -1

    # Base case
    if x < 10 or y < 10:
        return x * y

    # Divide by 2 to handle odd and even digit numbers
    n = max(len(str(x)), len(str(y))) // 2

    a, b = (x // 10 ** n, x % 10 ** n)
    c, d = (y // 10 ** n, y % 10 ** n)

    A = kmult(a, c)
    D = kmult(b, d)
    E = kmult(a + b, c + d) - A - D

    return A * 10 ** (n * 2) + E * 10 ** (n) + D