#ifdef DEBUG
#define _GLIBCXX_DEBUG 1
#endif
#include <bits/stdc++.h>
using namespace std;
bool Mbg;
namespace Anonyme {
#define QwQ01AwA return 0
using i64 = long long;
#define mset(a, x) memset(begin(a), x, sizeof(a))
#define file(x) freopen(x ".in", "r", stdin), freopen(x ".out", "w", stdout)
template <class T> bool ckmax(T &x, const T &y) {return x < y ? (x = y, 1) : 0;}
template <class T> bool ckmin(T &x, const T &y) {return x > y ? (x = y, 1) : 0;}
const int N = 1e5 + 5;
int n, na, nb;
string s1, s2, t1, t2;
array<int, 4> va[N], vb[N];
void solve() {
cin >> n;
cin >> s1 >> s2;
cin >> t1 >> t2;
na = nb = 0;
for (int i = 0, j = 0; i < n; i = j) {
if (t1[i] == '0') {
int c0 = s1[i] == '0', c1 = s1[i] == '1';
va[++na] = {i, i, c0, c1};
j++;
continue;
}
while (j < n && t1[j] == '1') j++;
int c0 = 0, c1 = 0;
for (int k = i; k < j; k++) c0 += s1[k] == '0', c1 += s1[k] == '1';
va[++na] = {i, j - 1, c0, c1};
}
for (int i = 0, j = 0; i < n; i = j) {
if (t2[i] == '0') {
int c0 = s2[i] == '0', c1 = s2[i] == '1';
vb[++nb] = {i, i, c0, c1};
j++;
continue;
}
while (j < n && t2[j] == '1') j++;
int c0 = 0, c1 = 0;
for (int k = i; k < j; k++) c0 += s2[k] == '0', c1 += s2[k] == '1';
vb[++nb] = {i, j - 1, c0, c1};
}
int i = 1, j = 1;
int ans = 0;
while (i <= na && j <= nb) {
if (va[i][1] > vb[j][1]) {
int c0 = min(va[i][2], vb[j][2]);
int c1 = min(va[i][3], vb[j][3]);
ans += c0 + c1;
va[i][2] -= c0, va[i][3] -= c1;
vb[j][2] -= c0, vb[j][3] -= c1;
if (vb[j][2] || vb[j][3]) {
int p = vb[j][2] + vb[j][3];
if (va[i][2]) va[i][2] -= p;
else if (va[i][3]) va[i][3] -= p;
}
j++;
} else if (va[i][1] < vb[j][1]) {
int c0 = min(va[i][2], vb[j][2]);
int c1 = min(va[i][3], vb[j][3]);
ans += c0 + c1;
va[i][2] -= c0, va[i][3] -= c1;
vb[j][2] -= c0, vb[j][3] -= c1;
if (va[i][2] || va[i][3]) {
int p = va[i][2] + va[i][3];
if (vb[j][2]) vb[j][2] -= p;
else if (vb[j][3]) vb[j][3] -= p;
}
i++;
} else {
int c0 = min(va[i][2], vb[j][2]);
int c1 = min(va[i][3], vb[j][3]);
ans += c0 + c1;
i++, j++;
}
}
cout << ans << '\n';
}
void main01() {
file("edit");
#ifdef LOCAL
#endif
cin.tie(nullptr) -> sync_with_stdio(false);
int t;
cin >> t;
while (t--) solve();
}}
bool Med;
signed main() {
Anonyme::main01();
#ifdef LOCAL
cerr << endl;
cerr << "Time: " << 1.0 * clock() / CLOCKS_PER_SEC << "s" << endl;
cerr << "Memory: " << abs(&Mbg - &Med) / 1048576.0 << "mb"<< endl;
#endif
QwQ01AwA;
}