#include<bits/stdc++.h>
#define File(a) freopen(#a".in","r",stdin);freopen(#a".out","w",stdout)
#define ll long long
#define F(i,a,b) for(int i(a),i##i##end(b);i<=i##i##end;++i)
#define R(i,a,b) for(int i(a),i##i##end(b);i>=i##i##end;--i)
using namespace std;
const int MAXN=1e5+5;
int n;
char s1[MAXN],s2[MAXN],t1[MAXN],t2[MAXN];
int c1[2],c2[2],ans;
signed main(){
File(edit);
ios::sync_with_stdio(0);
cin.tie(0),cout.tie(0);
int T;
for(cin>>T;T;--T){
cin>>n>>(s1+1)>>(s2+1)>>(t1+1)>>(t2+1);
c1[0]=c1[1]=c2[0]=c2[1]=ans=0;
s1[n+1]=s2[n+1]=t1[n+1]=t2[n+1]='0';
int p1=0,p2=0;
F(i,0,n){
while(t1[p1+1]=='1') ++c1[s1[++p1]-'0'];
while(t2[p2+1]=='1') ++c2[s2[++p2]-'0'];
if(i==p1&&i==p2){
int m0=min(c1[0],c2[0]),m1=min(c1[1],c2[1]);
ans+=m0+m1;
c1[0]=c1[1]=c2[0]=c2[1]=0;
if(s1[i+1]==s2[i+1]) ++ans;
p1=i+1,p2=i+1;
}else if(i==p1){
int m0=min(c1[0],c2[0]),m1=min(c1[1],c2[1]);
ans+=m0+m1;
c1[0]-=m0,c2[0]-=m0,c1[1]-=m1,c2[1]-=m1;
if(c1[0]) c2[1]-=c1[0],c1[0]=0;
if(c1[1]) c2[0]-=c1[1],c1[1]=0;
if(c2[s1[i+1]-'0']) ++ans,--c2[s1[i+1]-'0'];
else --c2[(s1[i+1]-'0')^1];
p1=i+1;
}else if(i==p2){
int m0=min(c1[0],c2[0]),m1=min(c1[1],c2[1]);
ans+=m0+m1;
c1[0]-=m0,c2[0]-=m0,c1[1]-=m1,c2[1]-=m1;
if(c2[0]) c1[1]-=c2[0],c2[0]=0;
if(c2[1]) c1[0]-=c2[1],c2[1]=0;
if(c1[s2[i+1]-'0']) ++ans,--c1[s2[i+1]-'0'];
else --c1[(s2[i+1]-'0')^1];
p2=i+1;
}
}
cout<<ans-1<<"\n";
}
return 0;
}