def completeDict(targetDict:dict, otherDict:dict) -> dict:
    """
        Completes target with the keys of other, if they are not present,
        stores the values of other. If they are, target keeps their values.
        Does not use copy.
    """
    for key in otherDict.keys():
        target = targetDict.get(key)
        load = otherDict[key]
        if target is not None:
            if isinstance(target, dict) and isinstance(load, dict):
                targetDict[key] = completeDict(target, load)
        else:
            targetDict[key] = load
    return targetDict