| Codeforces Round 1054 (Div. 3) |
|---|
| Закончено |
Дана строка $$$s$$$ длины $$$n$$$, состоящая только из символов 'a' и 'b'.
За одну операцию можно выбрать позицию $$$i$$$ ($$$1 \le i \le n-1$$$) и поменять соседние символы $$$s_i$$$ и $$$s_{i+1}$$$ местами.
Вам нужно за минимальное количество операций сделать так, чтобы все символы какого-то одного вида (либо $$$a$$$, либо $$$b$$$) располагались строго подряд, то есть образовывали ровно один непрерывный блок.
Символы второго вида при этом могут стоять как до, так и после этого блока, образуя две (возможно пустые) части.
Примеры допустимых итоговых форм:
Требуется найти минимальное число описанных операций, необходимое для достижения указанного состояния.
Каждый тест состоит из нескольких наборов входных данных.
В первой строке находится одно целое число $$$t$$$ ($$$1 \le t \le 10^4$$$) — количество наборов входных данных. Далее следует описание наборов входных данных.
Первая строка каждого набора входных данных содержит одно целое число $$$n$$$ ($$$1 \le n \le 2 \cdot 10^5$$$) — длина строки $$$s$$$.
Вторая строка содержит строку $$$s$$$ длины $$$n$$$, состоящую только из символов 'a' и 'b'.
Гарантируется, что сумма значений $$$n$$$ по всем наборам входных данных не превосходит $$$2 \cdot 10^5$$$.
Для каждого набора выведите одно целое число — минимальное число операций, необходимых, чтобы все символы одного из двух видов образовали единый непрерывный блок.
54abab6bababa7abababa2ab1b
12200
В первом наборе входных данных исходная строка 'abab':
В пятом наборе входных данных строка состоит из одного символа 'b'. Единственный символ уже образует непрерывный блок, перестановки не требуются, поэтому минимальное число операций равно $$$0$$$.
| Название |
|---|


