Олимпиадный тренинг

Задача . E. Почини строку


Правильная скобочная последовательность — это скобочная последовательность, которую можно превратить в корректное арифметическое выражение, вставив символы «1» и «+» между исходными символами. Например:

  • скобочные последовательности «()()» и «(())» — правильные (из них можно получить выражения «(1)+(1)» и «((1+1)+1)»);
  • скобочные последовательности «)(», «(» и «)» — неправильные.

Вам даны две строки \(s\) и \(a\), длина строки \(s\) равна \(n\), длина строки \(a\) равна \(n - 3\). Строка \(s\) — скобочная последовательность (т. е. каждый элемент этой строки — либо символ открывающей скобки, либо символ закрывающей скобки). Строка \(a\) — бинарная (т. е. каждый элемент этой строки — либо 1, либо 0).

Строка \(a\) вводит ограничения на строку \(s\): для каждого \(i\), такого, что символ \(a_i\) — это 1, строка \(s_i s_{i+1} s_{i+2} s_{i+3}\) должна быть правильной скобочной последовательностью. Символы строки \(a\), равные 0, не вводят никаких ограничений.

Изначально строка \(s\) может не удовлетворять этим ограничениям. Чтобы это исправить, можно проводить следующую операцию любое кол-во раз: заменить некоторый символ \(s\) скобкой другого типа (то есть можно менять открывающие скобки на закрывающие и наоборот).

Определите, можно ли поменять некоторые символы в \(s\) таким образом, что она будет удовлетворять всем ограничениям, и если это возможно, посчитайте минимальное кол-во символов, которые надо заменить.

Входные данные

В первой строке задано одно целое число \(t\) (\(1 \le t \le 10^4\)) — количество наборов входных данных.

Каждый набор входных данных состоит из трех строк. В первой строке задано одно целое число \(n\) (\(4 \le n \le 2 \cdot 10^5\)). Во второй строке задана строка \(s\) из ровно \(n\) символов; каждый символ \(s\) — либо «(», либо «)». В третьей строке задана строка \(a\) из ровно \(n - 3\) символов; каждый символ \(a\) — либо «1», либо «0».

Дополнительное ограничение на входные данные: сумма \(n\) по всем наборам входных данных не превосходит \(2 \cdot 10^5\).

Выходные данные

Для каждого набора входных данных выведите одно целое число: минимальное количество символов, которое нужно поменять в \(s\), или \(-1\), если все ограничения выполнить невозможно.


Примеры
Входные данныеВыходные данные
1 6
4
))((
1
4
))((
0
4
()()
0
6
))(()(
101
6
))(()(
001
5
(((((
11
2
0
0
4
1
-1

time 2000 ms
memory 256 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
Комментарий учителя