#include <bits/stdc++.h>
using namespace std;
const int N=100005;
int T,n,l1[N],r1[N],d1[N],l2[N],r2[N],d2[N],p1,p2,ans,len;
char s1[N],s2[N],t1[N],t2[N];
int main(){
freopen("edit.in","r",stdin);
freopen("edit.out","w",stdout);
scanf("%d",&T);
while(T--){
scanf("%d",&n);
scanf("%s%s",s1+1,s2+1);
scanf("%s%s",t1+1,t2+1);
p1=0,p2=0,ans=0;
for(int i=1;i<=n;i++){
if(t1[i]=='1'){
p1++;
for(int j=i;j<=n;j++){
if(s1[j]=='1')
d1[p1]++;
if(j==n||t1[j+1]=='0'){
l1[p1]=i,r1[p1]=j;
i=j;
break;
}
}
}
else{
p1++;
l1[p1]=i,r1[p1]=i;
if(s1[i]=='1')
d1[p1]++;
}
}
for(int i=1;i<=n;i++){
if(t2[i]=='1'){
p2++;
for(int j=i;j<=n;j++){
if(s2[j]=='1')
d2[p2]++;
if(j==n||t2[j+1]=='0'){
l2[p2]=i,r2[p2]=j;
i=j;
break;
}
}
}
else{
p2++;
l2[p2]=i,r2[p2]=i;
if(s2[i]=='1')
d2[p2]++;
}
}
for(int i=1,j=1;i<=p1&&j<=p2;){
if(r1[i]==r2[j]){
len=r1[i]-l1[i]+1;
ans+=int(min(d1[i],d2[j])+len-max(d1[i],d2[j]));
i++,j++;
}
else if(r1[i]>r2[j]){
len=r2[j]-l2[j]+1;
int t=min(len,min(d1[i],d2[j]));
ans+=t+len-d2[j];
d1[i]-=t,l1[i]=r2[j]+1;
j++;
}
else{
len=r1[i]-l1[i]+1;
int t=min(len,min(d1[i],d2[j]));
ans+=t+len-d1[i];
d2[j]-=t,l2[j]=r1[i]+1;
i++;
}
}
printf("%d\n",ans);
for(int i=1;i<=p1;i++)
d1[i]=0;
for(int i=1;i<=p2;i++)
d2[i]=0;
}
return 0;
}