def fill_input(form: dict, curr_text_input: dict, string: str):
    """
    This function makes a deep copy of a form and fills the specified text input with the specified string.
    
    @param form: The current form.
    @type form: dict
    @param curr_text_input: The current text input tag.
    @type curr_text_input: dict
    @param string: the string we want to use.
    @type string: str
    @return: A deep copy of the form.
    @rtype: dict
    """
    new_form = dict()
    new_form["action"] = str(form["action"])  # Same action.
    new_form["method"] = str(form["method"])  # Same method.
    new_form["form"] = form["form"]  # Same form.
    new_form["inputs"] = list()
    for input_tag in form["inputs"]:
        new_input_tag = dict(input_tag)  # Deep copy to the input tag.
        if curr_text_input == new_input_tag:
            # This is the input we are looking for.
            new_input_tag["value"] = string
        new_form["inputs"].append(new_input_tag)
    return new_form