from typing import Dict
from typing import Any


def merge_dicts(dict1:  Dict[str, Any],
                dict2:  Dict[str, Any],
                *dicts: Dict[str, Any]) -> Dict[str, Any]:
    """
    Merge multiple dictionaries, producing a merged result without modifying
    the arguments.

    :param dict1:  the first dictionary
    :param dict2:  the second dictionary
    :param dicts:  additional dictionaries

    :return: The merged dictionary. Keys in dict2 overwrite duplicate keys in
             dict1
    """
    res = dict1.copy()
    res.update(dict2)
    for d in dicts:
        res.update(d)
    return res