#include using namespace std; typedef long long ll; int t, n, ans, tmp, sum1[4], sum2[4]; string s1, s2, t1, t2; int main() { #ifdef Lopera freopen("day0/edit/edit1.in", "r", stdin); freopen("edit.out", "w", stdout); freopen("edit.err", "w", stderr); #else freopen("edit.in", "r", stdin); freopen("edit.out", "w", stdout); #endif ios::sync_with_stdio(0); cin.tie(0), cout.tie(0); cin >> t; while(t--) { cin >> n >> s1 >> s2 >> t1 >> t2; s1.push_back('2'); s2.push_back('3'); t1.push_back('0'); t2.push_back('0'); ans = 0, sum1[0] = sum1[1] = sum2[0] = sum2[1] = 0; for(int i = 0, j = 0; i < n || j < n; ) { while(i < n && t1[i] != '0') { ++sum1[s1[i] - '0']; ++i; } while(j < n && t2[j] != '0') { ++sum2[s2[j] - '0']; ++j; } // cerr << i << " " << j << "!\n"; // cerr << sum1[0] << " " << sum1[1] << " " << sum2[0] << " " << sum2[1] << '\n'; if(i < j) { ++sum1[s1[i] - '0']; ++i; tmp = min(sum1[0], sum2[0]); sum1[0] -= tmp, sum2[0] -= tmp, ans += tmp; tmp = min(sum1[1], sum2[1]); sum1[1] -= tmp, sum2[1] -= tmp, ans += tmp; if(sum1[0]) sum2[1] -= sum1[0], sum1[0] = 0; if(sum1[1]) sum2[0] -= sum1[1], sum1[1] = 0; } else if(i > j) { ++sum2[s2[j] - '0']; ++j; tmp = min(sum1[0], sum2[0]); sum1[0] -= tmp, sum2[0] -= tmp, ans += tmp; tmp = min(sum1[1], sum2[1]); sum1[1] -= tmp, sum2[1] -= tmp, ans += tmp; if(sum2[0]) sum1[1] -= sum2[0], sum2[0] = 0; if(sum2[1]) sum1[0] -= sum2[1], sum2[1] = 0; } else { ans += min(sum1[0], sum2[0]) + min(sum1[1], sum2[1]) + (s1[i] == s2[j]); ++i, ++j; sum1[0] = sum1[1] = sum2[0] = sum2[1] = 0; } // cerr << ans << '\n'; } cout << ans << '\n'; } #ifdef Lopera cerr << '\n' << (double)clock() / CLOCKS_PER_SEC; #endif return 0; } /* g++ edit.cpp -o edit -std=c++14 -O2 -DLopera -static -Wall "-Wl,--stack=998244353"; ./edit */ /* 最后五分钟了,也调不出来了,写点东西吧 算是正常发挥吧,T3T4 没做出来 做出来了算奇迹吧 我能说什么呢 这个分要冲省队还是很难的 我也不知道要不要继续学 OI 了,学都学不动 好迷茫呀 唉唉 但是真心不喜欢 whk 看看省选能不能像去年一样创造奇迹吧 如果有奇迹就当是命运了,继续学吧 没有就退了吧,然后浑浑噩噩度过高中生活 废了 想哭啊 */