from typing import Counter


def autonumerate(things):
    """Detect duplicate entries in a string list and suffix them.

    Suffixes are in _N format where N a natural number >=2. Existing suffixes
    in that format will also be detected and incremented.

    Args:
        things[str]: A list of strings.
    Returns:
        [str]: A corrected list of strings.
    """
    c = Counter(things);
    # Because I use decrement, reversing the list ensures first instance gets smallest number.
    things.reverse()
    for i, t in enumerate(things):
        n = c[t]
        if n > 1:  # The first occurrence is not suffixed.
            newname = t +'_' + str(n)
            while newname in things:  # Check for already present suffixes
                n += 1
                newname = t +'_' + str(n)
            things[i] = newname
            c[t] -= 1
    things.reverse()
    return things