def approximate_occurrences(genome: str, pattern: str, mismatches: int) -> list:
    neighbours = generate_neighbours(pattern, mismatches)
    occurrences = set()
    for neighbour in neighbours:
        search_start = 0
        while (search_start <= (len(genome) - len(pattern))):
            index_found = genome.find(neighbour, search_start)
            if (index_found == (- 1)):
                break
            occurrences.add(index_found)
            search_start = (index_found + 1)
    return sorted(list(occurrences))
def approximate_occurrences(genome: str, pattern: str, mismatches: int) -> list:
    neighbours = generate_neighbours(pattern, mismatches)
    occurrences = set()
    for neighbour in neighbours:
        search_start = 0
        while (search_start <= (len(genome) - len(pattern))):
            index_found = genome.find(neighbour, search_start)
            if (index_found == (- 1)):
                break
            occurrences.add(index_found)
            search_start = (index_found + 1)
    return sorted(list(occurrences))