#include<bits/stdc++.h>
#define int long long
#define MAXN 200005
using namespace std;
int T,n,a[MAXN],b[MAXN],c[MAXN],d[MAXN],ans,f[MAXN][2],g[MAXN][2],st[MAXN][2],ed[MAXN][2],p[MAXN],cnta,cntb;
bool flag1,flag2;
const int l=1;
int read(){
	char cc=getchar();
	while(cc!='0'&&cc!='1')cc=getchar();
	return (cc-'0');
}
signed main(){
	freopen("edit.in","r",stdin);
	freopen("edit.out","w",stdout);
	scanf("%lld",&T);
	while(T--){
		for(int i=1;i<=n*2;i++)a[i]=b[i]=c[i]=d[i]=f[i][0]=f[i][1]=g[i][0]=g[i][1]=st[i][0]=st[i][1]=ed[i][0]=ed[i][1]=p[i]=0;
		ans=0;
		cnta=cntb=flag1=flag2=1;
		scanf("%lld",&n);
		for(int i=1;i<=n;i++){
			a[i]=read();
			if(a[i]!=a[i-1]&&i>1)flag1=0;
		}
		for(int i=1;i<=n;i++)b[i]=read();
		for(int i=1;i<=n;i++)c[i]=read();
		for(int i=1;i<=n;i++){
			d[i]=read();
			if(c[i]!=d[i])flag2=0;
		}
		if(flag1==1){
			for(int i=1;i<=n;i++)if(a[i]==b[i])ans++;
			printf("%lld\n",ans);
			continue;
		}
		st[1][0]=st[1][1]=1;
		for(int i=1;i<=n;i++){
			if(c[i]==0)ed[cnta++][0]=i-1,st[cnta][0]=i+1;
			else f[cnta][a[i]]++;
			if(d[i]==0)ed[cntb++][1]=i-1,st[cntb][1]=i+1;
			else g[cntb][b[i]]++,p[i]=cntb;
		}
		if(flag2==1){
			for(int i=1;i<=cnta;i++)ans+=min(f[i][0],g[i][0])+min(f[i][1],g[i][1]);
			for(int i=1;i<=n;i++)if(c[i]==0)ans+=(a[i]==b[i]);
			printf("%lld\n",ans);
			continue;
		}
		int ti=1;
		for(int i=1;i<=cnta;i++){
//			cout<<st[i][0]<<' '<<ed[i][0]<<endl;
			if(st[i][0]>ed[i][0])continue;
			int ca=f[i][0],cb=f[i][1];
			for(int j=st[i][0];j<=ed[i][0];j++){
				if(!d[j]){
					if(b[j]==0){
						int ansa=min(ca,l);
						ans+=ansa,ca-=ansa;
//						cout<<j<<"!0\n";
					}else{
						int ansb=min(cb,l);
						ans+=ansb,cb-=ansb;
//						cout<<j<<"!1\n";
					}
					
				}
			}
			ti--;
//			cout<<"!\n";
			for(;st[ti][1]<=ed[i][0]&&ti<=cntb;ti++){
//				cout<<"ti"<<ti<<endl;
				int ansa=min(ca,g[ti][0]);
//				cout<<ansa<<' '<<ca<<' '<<g[ti][0]<<endl;
				ans+=ansa,ca-=ansa,g[ti][0]-=ansa;
				int ansb=min(cb,g[ti][1]);
//				cout<<ansb<<' '<<cb<<' '<<g[ti][1]<<endl;
				ans+=ansb,cb-=ansb,g[ti][1]-=ansb;
			}
		}
		for(int i=1;i<=n;i++){
			if(!c[i]){
				if(!d[i]){
					ans+=(a[i]==b[i]);
				}else{
					if(g[p[i]][a[i]]>0){
						ans++;
						g[p[i]][a[i]]--;
//						cout<<i<<' '<<p[i]<<g[p[i]][a[i]]<<endl;
					}
				}
			}
//			if(p[i]==10)cout<<a[i]<<' '<<b[i]<<c[i]<<' '<<d[i]<<endl;
		}
//		for(int i=1;i<=cntb;i++)cout<<g[i][1]<<endl;
		printf("%lld\n",ans);
	}
	return 0;
}

