#include<bits/stdc++.h>
#define ll long long
#define reg register
#define db double
#define il inline
using namespace std;
void read(int &x){x=0;int f=1;char c=getchar();while(c>'9'||c<'0'){if(c=='-')f=-1;c=getchar();}while(c>='0'&&c<='9'){x=x*10+c-'0';c=getchar();}x*=f;}
void read(ll &x){x=0;int f=1;char c=getchar();while(c>'9'||c<'0'){if(c=='-')f=-1;c=getchar();}while(c>='0'&&c<='9'){x=x*10+c-'0';c=getchar();}x*=f;}
const int N=1e5+5;
int t,n;
int r1[N],r2[N],cnt1[N][2],cnt2[N][2];
char c1[N],c2[N],d1[N],d2[N];
int main(){
read(t);
while(t--){
int ans=0;
read(n);
scanf("%s",c1+1);scanf("%s",c2+1);
scanf("%s",d1+1);scanf("%s",d2+1);
memset(cnt1,0,sizeof(cnt1));memset(cnt2,0,sizeof(cnt2));
d1[n+1]='0';d2[n+1]='0';
c1[n+1]='0';c2[n+1]='0';n++;
for(int i=n;i>=1;i--){
if(d1[i]=='0')r1[i]=i;
else r1[i]=r1[i+1];
if(d2[i]=='0')r2[i]=i;
else r2[i]=r2[i+1];
}
for(int i=1;i<=n;i++){
if(d1[i]=='1')cnt1[i][c1[i]-'0']++;
if(d2[i]=='1')cnt2[i][c2[i]-'0']++;
cnt1[i][0]+=cnt1[i-1][0];cnt1[i][1]+=cnt1[i-1][1];
cnt2[i][0]+=cnt2[i-1][0];cnt2[i][1]+=cnt2[i-1][1];
}
int l1=1,t1=0,l2=1,t2=0;
int now1[2]={0},now2[2]={0};
int summ=0;
for(int i=1;i<=n;i++){
if(t1<i){
l1=t1+1;t1=r1[l1];
now1[0]=cnt1[t1][0]-cnt1[l1-1][0];
now1[1]=cnt1[t1][1]-cnt1[l1-1][1];
ans+=summ;summ=0;
}
if(t2<i){
l2=t2+1;t2=r2[l2];
now2[0]=cnt2[t2][0]-cnt2[l2-1][0];
now2[1]=cnt2[t2][1]-cnt2[l2-1][1];
ans+=summ;summ=0;
}
if(d1[i]=='0'&&d2[i]=='0'){
if(c1[i]==c2[i])ans++;
}else if(d1[i]=='0'){
if(now2[c1[i]-'0']){
now2[c1[i]-'0']--;ans++;
}
}else if(d2[i]=='0'){
if(now1[c2[i]-'0']){
now1[c2[i]-'0']--;ans++;
}
}else{
summ++;
}
if(min(now1[0],now2[0])<summ){
if(now1[1]&&now2[1]){
now1[1]--;now2[1]--;ans++;summ--;
}else{
summ=min(now1[0],now2[0]);
}
}else if(min(now2[1],now1[1])<summ){
if(now1[0]&&now2[0]){
now1[0]--;now2[0]--;ans++;summ--;
}else{
summ=min(now2[1],now1[1]);
}
}
}
cout<<ans-1<<endl;
}
return 0;
}