def first_mismatch(str1, str2):
    """
    Returns the position of the first mismatch between 2 strings.

    :param str1: The first string
    :param str2: The second string
    :return: Position of the first mismatch else -1 if no mismatches

    >>> first_mismatch('abc', 'def')
    0
    >>> first_mismatch('abc', 'abe')
    2
    >>> first_mismatch('abc', 'abc')
    -1
    >>> first_mismatch('abc', 'abcde')
    -1
    """
    for i, j in enumerate(zip(str1, str2)):
        if j[0] != j[1]:
            return i
    else:
        return -1
