def merge(list1, list2):
    """
    Merge two sorted lists.

    Returns a new sorted list containing those elements that are in
    either list1 or list2.

    Iterative, because recursive would generate too many calls for 
    reasonably sized lists.
    """   
    merged_list = []
    copy_list1 = list(list1)
    copy_list2 = list(list2)
    
    # While both lists still have contents (until one runs out)
    while (len(copy_list1) > 0) and (len(copy_list2) > 0):
        # Add the lower ranked word to create ascending order
        if copy_list1[0] >= copy_list2[0]:
            merged_list.append(copy_list2.pop(0))
        else:
            merged_list.append(copy_list1.pop(0))
    # Add contents from remaining list (if any)
    if len(copy_list1) > 0:
        merged_list.extend(copy_list1)
    if len(copy_list2) > 0:
        merged_list.extend(copy_list2)
    return merged_list