#include <bits/stdc++.h>
using namespace std;
#define int long long
#define M 200005
#define mid ((L+R)/2)
#define p1 first
#define p2 second
#define make_pair P
const int inf=1e18+7;
inline void read(int &x) {
x=0; char ch=getchar(); int fg=1;
while(ch<'0'||ch>'9') fg=(ch=='-'?-1:fg),ch=getchar();
while(ch>='0'&&ch<='9') x=x*10+ch-'0',ch=getchar();
x*=fg;
}
inline void write(int x) {
if(x<0) putchar('-'),x=-x;
if(x>9) write(x/10);
putchar(x%10+'0');
}
int TT,n,rr,ans;
int a[2][M];
int sz[2],s1[2][M],l[2][M],r[2][M];
int c0[2],c1[2];
string s,t,S,T,ss;
void CLEAR() {
sz[0]=sz[1]=0;
ans=0;
}
int V(int L,int R,int f1,int f2) {
int cc1=s1[f1][R]-(L?s1[f1][L-1]:0);
if(f2) return cc1; return (R-L+1)-cc1;
}
void Solve() {
int z0=0,z1=0,tg,nr=-1,nw;
c0[0]=c0[1]=c1[0]=c1[1]=0,tg=-1;
while(z0<sz[0]||z1<sz[1]) {
if(!z0||nr==r[0][z0]) z0++,c0[0]=V(nr+1,r[0][z0],0,0),c1[0]=V(nr+1,r[0][z0],0,1);
if(!z1||nr==r[1][z1]) z1++,c0[1]=V(nr+1,r[1][z1],1,0),c1[1]=V(nr+1,r[1][z1],1,1);
if(r[0][z0]>r[1][z1]) tg=0; else tg=1;
nw=min(r[0][z0],r[1][z1]);
for(int i=nr+1;i<=nw;i++) {
if(c1[tg^1]) {
c1[tg^1]--;
if(c1[tg]) c1[tg]--,ans++;
else c0[tg]--;
} else {
c0[tg^1]--;
if(c0[tg]) c0[tg]--,ans++;
else c1[tg]--;
}
}
nr=nw;
}
}
signed main() {
freopen("edit.in","r",stdin);
freopen("edit.out","w",stdout);
ios::sync_with_stdio(false);
cin.tie(0),cout.tie(0);
cin>>TT;
while(TT--) {
CLEAR();
cin>>n>>s>>t>>S>>T,ss=s,rr=inf;
for(int i=0;i<n;i++) a[0][i]=s[i]-'0',a[1][i]=t[i]-'0';
for(int i=0;i<n;i++) s1[0][i]=(i?s1[0][i-1]:0)+(s[i]=='1');
for(int i=0;i<n;i++) s1[1][i]=(i?s1[1][i-1]:0)+(t[i]=='1');
for(int i=0;i<n;i++) {
if(S[i]=='0') {l[0][++sz[0]]=i,r[0][sz[0]]=i; continue;}
rr=min(rr,i);
if(i==n-1||S[i+1]=='0') l[0][++sz[0]]=rr,r[0][sz[0]]=i,rr=inf;
}
for(int i=0;i<n;i++) {
if(T[i]=='0') {l[1][++sz[1]]=i,r[1][sz[1]]=i; continue;}
rr=min(rr,i);
if(i==n-1||T[i+1]=='0') l[1][++sz[1]]=rr,r[1][sz[1]]=i,rr=inf;
}
Solve();
cout<<ans<<endl;
}
return 0;
}