#include <bits/stdc++.h>
using namespace std;
const int N = 2e5 + 10;
int n, T, ans;
char h1[N], h2[N], h3[N], h4[N];
char *a = h1, *b = h2, *s = h3, *t = h4;
void add(int &p, int &x, int &y, char * o)
{
p++;
if (p > n) return;
x += (o[p] == '0');
y += (o[p] == '1');
}
int main()
{
freopen("edit.in", "r", stdin);
freopen("edit.out", "w", stdout);
ios::sync_with_stdio(0);
cin.tie(0), cout.tie(0);
cin >> T;
while (T--) {
cin >> n >> a + 1 >> b + 1 >> s + 1 >> t + 1;
ans = 0;
int p = 0, q = 0, cnt0 = 0, cnt1 = 0, cnt2 = 0, cnt3 = 0;
while (!p || (s[p] != '0' && s[p + 1] != '0' && p < n)) add(p, cnt0, cnt1, a);
while (!q || (t[q] != '0' && t[q + 1] != '0' && q < n)) add(q, cnt2, cnt3, b);
while (p <= n) {
ans += min(cnt0, cnt2) + min(cnt1, cnt3);
if (q < p) swap(a, b), swap(s, t), swap(cnt0, cnt2), swap(cnt1, cnt3), swap(p, q);
cnt2 = max(0, min(cnt2 - cnt0, q - p));
cnt3 = max(0, min(cnt3 - cnt1, q - p));
cnt0 = cnt1 = 0;
if (p == q) add(q, cnt2, cnt3, b);
add(p, cnt0, cnt1, a);
while (s[p] != '0' && s[p + 1] != '0' && p < n) add(p, cnt0, cnt1, a);
while (t[q] != '0' && t[q + 1] != '0' && q < n) add(q, cnt2, cnt3, b);
}
cout << ans << endl;
}
return 0;
}