rt,
#include <bits/stdc++.h>
const int MAXN = 1e5 + 5;
int stra[MAXN], strb[MAXN];
int groupa[MAXN], groupb[MAXN];
int a0[MAXN], b0[MAXN];
int a1[MAXN], b1[MAXN];
void read_str(int str[], int len)
{
for (int i = 0; i < len; i ++)
{
char ch;
std::cin >> ch;
str[i] = ch - '0';
}
}
void read_group(int group[], int len)
{
char last;
std::cin >> last;
int cnt = 0;
for (int i = 1; i < len; i ++)
{
char ch;
std::cin >> ch;
if (ch != last)
{
cnt ++;
last = ch;
}
group[i] = cnt;
}
}
int main()
{
// freopen("./edit2.in", "r", stdin);
// freopen("./edit2.out", "w", stdout);
int T;
std::cin >> T;
while (T --)
{
int n;
std::cin >> n;
read_str(stra, n), read_str(strb, n);
read_group(groupa, n), read_group(groupb, n);
memset(a0, 0, MAXN);
memset(a1, 0, MAXN);
memset(b0, 0, MAXN);
memset(b1, 0, MAXN);
for (int i = 0; i < n; i ++)
{
if (stra[i] == 0)
{
a0[groupa[i]] ++;
}
else
{
a1[groupa[i]] ++;
}
if (strb[i] == 0)
{
b0[groupb[i]] ++;
}
else
{
b1[groupb[i]] ++;
}
}
int result = 0;
for (int i = 0; i < n; i ++)
{
if ((a1[groupa[i]] > 0) && (b1[groupb[i]] > 0))
{
a1[groupa[i]] --;
b1[groupb[i]] --;
result ++;
}
else if ((a0[groupa[i]] > 0) && (b0[groupb[i]] > 0))
{
a0[groupa[i]] --;
b0[groupb[i]] --;
result ++;
}
}
std::cout << result << "\n";
}
}