def remove_using_lower_case(body, body_lower, to_replace):
    """
    Replace `to_replace` (which will always be lower case) in `body`
    (which is the original string) using `body_lower` as base for the
    search.

    Example input:
        body: Hello World World
        body_lower: hello world world
        to_replace: world

    Output:
        body: Hello
        body_lower: hello

    :param body: The original string
    :param body_lower: The original string after .lower()
    :param to_replace: The string to replace
    :return: A tuple containing:
                The original string without `to_replace`
                The string from the first item after .lower()
    """
    idx = 0
    to_replace_len = len(to_replace)

    while idx < len(body):
        index_l = body_lower.find(to_replace, idx)

        if index_l == -1:
            return body, body_lower

        body = body[:index_l] + body[index_l + to_replace_len:]
        body_lower = body.lower()

        idx = index_l + 1

    return body, body_lower