if end > len(s):
    return None
for i in range(start, end, dist):
    result[i] = char
return ''.join(result)

def rearrange3(s, dist):
    start = 0
result = [None] * len(s)
for char, count in sorted(list(Counter(s).items()), key=lambda x: x[1], reverse=True
    ):
    pass
использование кучи помогает повысить производительность при перестановке строк