Это сложная версия задачи. Отличие между версиями заключается в том, что в этой версии строка $$$t$$$ состоит из «0», «1» и «?». Вы можете делать взломы только в том случае, если решили все версии этой задачи.
У Кевина есть бинарная строка $$$s$$$ длины $$$n$$$. Кевин может выполнять следующую операцию:
Блок — это максимальная по включению подстрока$$$^{\text{∗}}$$$ из одинаковых символов. Формально, обозначим подстроку $$$s_l s_{l+1} \ldots s_r$$$ как $$$s[l,r]$$$. Тогда $$$s[l,r]$$$ является блоком, если выполняются все условия:
Соседними блоками являются два блока $$$s[l_1,r_1]$$$ и $$$s[l_2,r_2]$$$, для которых $$$r_1+1=l_2$$$.
Например, если $$$s=\mathtt{000}\,\mathbf{11}\,\mathbf{00}\,\mathtt{111}$$$, Кевин может выбрать два блока $$$s[4,5]$$$ и $$$s[6,7]$$$ и поменять их местами, преобразовав $$$s$$$ в $$$\mathtt{000}\,\mathbf{00}\,\mathbf{11}\,\mathtt{111}$$$.
Дана строка $$$t$$$ длины $$$n$$$, состоящая из символов «0», «1» и «?». Кевин хочет определить минимальное количество операций, необходимых для получения строки, для которой выполняется следующее условие: для любого индекса $$$i$$$ ($$$1\le i\le n$$$), если $$$t_i\not=$$$ '?', то $$$s_i=t_i$$$. Если это невозможно, выведите $$$-1$$$.
$$$^{\text{∗}}$$$Строка $$$a$$$ является подстрокой строки $$$b$$$, если $$$a$$$ может быть получена из $$$b$$$ удалением нескольких (возможно, ни одного или всех) символов с начала и нескольких (возможно, ни одного или всех) символов с конца.
Каждый тест состоит из нескольких наборов входных данных. В первой строке находится одно целое число $$$t$$$ ($$$1 \le t \le 10^4$$$) — количество наборов входных данных. Далее следует описание наборов входных данных.
Первая строка каждого набора входных данных содержит строку $$$s$$$, состоящую из «0» и «1».
Вторая строка каждого набора входных данных содержит строку $$$t$$$, состоящую из «0», «1» и «?».
Гарантируется, что $$$s$$$ и $$$t$$$ имеют одинаковую длину.
Гарантируется, что сумма длин $$$s$$$ по всем наборам входных данных не превосходит $$$4\cdot 10^5$$$.
Для каждого набора входных данных выведите одно целое число — минимальное необходимое количество операций. Если это невозможно, выведите $$$-1$$$.
600011001110000011111010101111000010101100101101001100100111001
1 3 1 -1 -1 -1
6010101?0?0??0101?0?011100101????????11100101???11?1?1000100011?11?000?0?10101?1011
2 -1 0 2 2 -1
В первом наборе первого примера возможная последовательность операций приведена в условии.
Во втором наборе первого примера можно применить такую последовательность операций:
В первом наборе второго примера можно применить такую последовательность операций:
Название |
---|