#include<bits/stdc++.h>
using namespace std;
const int N=110000;
int t,n,ans,ss1[N],ss2[N],t1[N],t2[N],ct1[5],ct2[5];
char ch[N];
inline int read(){
int z=0,f=1;
char c=getchar();
while(c<'0'||c>'9'){
if(c=='-')f=-1;
c=getchar();
}
while(c>='0'&&c<='9'){
z=(z<<1)+(z<<3)+(c^48);
c=getchar();
}
return z*f;
}
int main(){
freopen("edit.in","r",stdin);
freopen("edit.out","w",stdout);
t=read();
while(t--){
for(int i=0; i<=1; i++)ct1[i]=0,ct2[i]=0;
ans=0;
n=read();
scanf("%s",ch);
for(int i=0; i<n; i++)ss1[i+1]=ch[i]-'0';
scanf("%s",ch);
for(int i=0; i<n; i++)ss2[i+1]=ch[i]-'0';
scanf("%s",ch);
for(int i=0; i<n; i++)t1[i+1]=ch[i]-'0';
scanf("%s",ch);
for(int i=0; i<n; i++)t2[i+1]=ch[i]-'0';
int l=1,r=1;
while(l<=n||r<=n){
while(t1[l]!=0&&l<=n)ct1[ss1[l]]++,l++;
while(t2[r]!=0&&r<=n)ct2[ss2[r]]++,r++;
if(l==r){
if(ss1[l]==ss2[r]&&l<=n)ans++;
ans+=min(ct1[1],ct2[1]);
ans+=min(ct1[0],ct2[0]);
ct1[1]=0,ct1[0]=0;
ct2[1]=0,ct2[0]=0;
l++,r++;
}
if(l<r){
ct1[ss1[l]]++,l++;
if(ct1[1]<=ct2[1])ans+=ct1[1],ct2[1]-=ct1[1];
else ans+=ct2[1],ct2[0]-=ct1[1]-ct2[1],ct2[1]=0;
if(ct1[0]<=ct2[0])ans+=ct1[0],ct2[0]-=ct1[0];
else ans+=ct2[0],ct2[1]-=ct1[0]-ct2[0],ct2[0]=0;
ct1[1]=0,ct1[0]=0;
}
if(l>r){
ct2[ss2[r]]++,r++;
if(ct2[1]<=ct1[1])ans+=ct2[1],ct1[1]-=ct2[1];
else ans+=ct1[1],ct1[0]-=ct2[1]-ct1[1],ct1[1]=0;
if(ct2[0]<=ct1[0])ans+=ct2[0],ct1[0]-=ct2[0];
else ans+=ct1[0],ct1[1]-=ct2[0]-ct1[0],ct1[0]=0;
ct2[1]=0,ct2[0]=0;
}
}
printf("%d\n",ans);
}
}