def cat(x):
    if x > 10:
        return x
    return dog(x * 2)


def dog(y):
    if y > 10:
        return y
    return cat(y * 2)


def fib(N):
    # TODO
    pass


def remove_vowels(word):
    # takes in a string and returns the same string without any vowels in it.
    vowels = {"A", "a", "E", "e", "I", "i", "O", "o", "U", "u", "Y", "y"}
    # TODO: What do you put here?


def foo(N):
    if N <= 1:
        return 0
    return 1 + foo(N // 2)  # Hint: // is integer division


def fizz(N):
    if N == 0:
        return 0
    return N % 10 + fizz(N // 10)


def ping_pong(N):
    if N <= 0:
        return
    if N % 2 == 1:
        print("ping")
    else:
        print("pong")
    ping_pong(N - 1)


def find_factors_helper(current, N):
    # TODO: What do you put here?
    pass


def find_factors(N):
    return find_factors_helper(0, N)


def binary_search(lst: list[int], target: int) -> int:
    return binary_search_helper(lst, target, 0, 0)


def binary_search_helper(lst: list[int], target: int, lo: int, hi: int) -> int:
    # TODO!
    return -1


if __name__ == "__main__":
    print("What to do?")
