actual_count = 0
for index, letter in zip(indexes, letters):
    if new_text[index] == letter:
        continue
new_text[index] = letter
actual_count += 1
if actual_count == count:
    yield ''.join(new_text)
for text in generate_replacements(0, 2, 'BGCX', 'BBBX'):
    pass
Python - построить новую строку определенной длины с n заменами из определенного алфавита