def find_magic_number_distinct(numbers):
    """Find magic number in list of distinct numbers

    :param numbers List of sorted distinct integers
    :return        Index of magic number or -1

    """

    def magic_number_helper(numbers, min_num, max_num):
        """Find magic number in list of distinct numbers

        :param numbers List of sorted distinct integers
        :param min_num minimum index
        :param max_num maximum index
        :return        Index of magic number or -1

        """
        if min_num > max_num:
            return -1
        middle = (max_num + min_num) // 2

        if numbers[middle] == middle:
            return middle
        elif numbers[middle] > middle:
            return magic_number_helper(numbers, min_num, middle - 1)
        elif numbers[middle] < middle:
            return magic_number_helper(numbers, middle + 1, max_num)

    return magic_number_helper(numbers, 0, len(numbers) - 1)