#include<bits/stdc++.h>
using namespace std;
int t,n;
string a,b,x,y;
struct o{
	int l,r,cnt0,cnt1;
	void clear(){
		l=r=cnt0=cnt1=0;
	}
}aa[100005],bb[100005],zza[100005],zzb[100005];
int main(){
	freopen("edit.in","r",stdin);
	freopen("edit.out","w",stdout);
	cin>>t;
	while(t--){
		cin>>n>>a>>b>>x>>y;
		for(int i=1;i<=n;i++)aa[i].clear(),bb[i].clear(),zza[i].clear(),zzb[i].clear();
		int cnta=0,cntb=0,ans=0;
		for(int i=0;i<n;i++){
			if(x[i]=='1'){
				if(x[i+1]=='1'||i!=0&&x[i-1]=='1');
				else x[i]='0';
			}
			if(y[i]=='1'){
				if(y[i+1]=='1'||i!=0&&y[i-1]=='1');
				else y[i]='0';
			}
		}
		for(int i=0;i<n;i++){
			if(x[i]=='1'){
				if(i==0||x[i-1]=='0')cnta++,aa[cnta].l=i;
				aa[cnta].r=i;
			}
			if(y[i]=='1'){
				if(i==0||y[i-1]=='0')cntb++,bb[cntb].l=i;
				bb[cntb].r=i;
			}
		}
		
		
		for(int i=0;i<n;i++)
			if(x[i]=='0'&&y[i]=='0'&&a[i]==b[i])ans++;
		for(int i=1;i<=cnta;i++)
			for(int j=aa[i].l;j<=aa[i].r;j++)
				if(a[j]=='1')aa[i].cnt1++;
				else aa[i].cnt0++;
		for(int i=1;i<=cntb;i++)
			for(int j=bb[i].l;j<=bb[i].r;j++)
				if(b[j]=='1')bb[i].cnt1++;
				else bb[i].cnt0++;
		
		
		for(int i=1;i<=cnta;i++)
			for(int j=aa[i].l;j<=aa[i].r;j++){
				if(y[j]=='0'){
					if(b[j]=='1'&&aa[i].cnt1)aa[i].cnt1--,ans++;
					if(b[j]=='0'&&aa[i].cnt0)aa[i].cnt0--,ans++;
				}
			}
		for(int i=1;i<=cntb;i++)
			for(int j=bb[i].l;j<=bb[i].r;j++){
				if(x[j]=='0'){
					if(a[j]=='1'&&bb[i].cnt1)bb[i].cnt1--,ans++;
					if(a[j]=='0'&&bb[i].cnt0)bb[i].cnt0--,ans++;
				}
			}
		int zzcntb=0,zzcnta=0,i=1,j=1;
		for(;i<=cnta&&j<=cntb;i++){
			while(bb[j].l<aa[i].l&&j<=cntb)zzb[++zzcntb]=bb[j],j++;
			while(bb[j].r<=aa[i].r&&j<=cntb){
				if(bb[j].cnt0<=aa[i].cnt0){
					ans+=bb[j].cnt0;
					aa[i].cnt0-=bb[j].cnt0;
				}else{
					ans+=aa[i].cnt0;
					aa[i].cnt0=0;
				}
				if(bb[j].cnt1<=aa[i].cnt1){
					ans+=bb[j].cnt1;
					aa[i].cnt1-=bb[j].cnt1;
				}else{
					ans+=aa[i].cnt1;
					aa[i].cnt1=0;
				}
				j++;
			}
		}
		for(;j<=cntb;j++)zzb[++zzcntb]=bb[j];
		i=1,j=1;
		for(;i<=zzcntb&&j<=cnta;i++){
			while(aa[j].l<zzb[i].l&&j<=cnta)zza[++zzcnta]=aa[j],j++;
			while(aa[j].r<=zzb[i].r&&j<=cnta){
				if(aa[j].cnt0<=zzb[i].cnt0){
					ans+=aa[j].cnt0;
					zzb[i].cnt0-=aa[j].cnt0;
				}else{
					ans+=zzb[i].cnt0;
					zzb[i].cnt0=0;
				}
				if(aa[j].cnt1<=zzb[i].cnt1){
					ans+=aa[j].cnt1;
					zzb[i].cnt1-=aa[j].cnt1;
				}else{
					ans+=zzb[i].cnt1;
					zzb[i].cnt1=0;
				}
				j++;
			}
		}
		for(;j<=cnta;j++)zza[++zzcnta]=aa[j];
		for(int i=1,j=1;i<=zzcnta&&j<=zzcntb;){
			if(zza[i].l<=zzb[j].l){
				if(zza[i].r>=zzb[j].l){
					int sl=zza[i].r-zzb[j].l+1;
					if(zza[i].cnt0>=zzb[j].cnt0){
						ans+=min(sl,zzb[j].cnt0);
						zza[i].cnt0-=min(sl,zzb[j].cnt0);
						int kk=zzb[j].cnt0;
						zzb[j].cnt0-=min(sl,zzb[j].cnt0);
						sl-=min(sl,kk);
					}else{
						ans+=min(sl,zza[i].cnt0);
						zzb[j].cnt0-=min(sl,zza[i].cnt0);
						int kk=zza[i].cnt0;
						zza[i].cnt0-=min(sl,zza[i].cnt0);
						sl-=min(sl,kk);
					}
					if(zza[i].cnt1>=zzb[j].cnt1){
						ans+=min(sl,zzb[j].cnt1);
						zza[i].cnt1-=min(sl,zzb[j].cnt1);
						int kk=zzb[j].cnt1;
						zzb[j].cnt1-=min(sl,zzb[j].cnt1);
						sl-=min(sl,kk);
					}else{
						ans+=min(sl,zza[i].cnt1);
						zzb[j].cnt1-=min(sl,zza[i].cnt1);
						int kk=zza[i].cnt1;
						zza[i].cnt1-=min(sl,zza[i].cnt1);
						sl-=min(sl,kk);
					}
				}
				i++;
			}else{
				if(zzb[j].r>=zza[i].l){
					int sl=zzb[j].r-zza[i].l+1;
					if(zza[i].cnt0>=zzb[j].cnt0){
						ans+=min(sl,zzb[j].cnt0);
						zza[i].cnt0-=min(sl,zzb[j].cnt0);
						int kk=zzb[j].cnt0;
						zzb[j].cnt0-=min(sl,zzb[j].cnt0);
						sl-=min(sl,kk);
					}else{
						ans+=min(sl,zza[i].cnt0);
						zzb[j].cnt0-=min(sl,zza[i].cnt0);
						int kk=zza[i].cnt0;
						zza[i].cnt0-=min(sl,zza[i].cnt0);
						sl-=min(sl,kk);
					}
					if(zza[i].cnt1>=zzb[j].cnt1){
						ans+=min(sl,zzb[j].cnt1);
						zza[i].cnt1-=min(sl,zzb[j].cnt1);
						int kk=zzb[j].cnt1;
						zzb[j].cnt1-=min(sl,zzb[j].cnt1);
						sl-=min(sl,kk);
					}else{
						ans+=min(sl,zza[i].cnt1);
						zzb[j].cnt1-=min(sl,zza[i].cnt1);
						int kk=zza[i].cnt1;
						zza[i].cnt1-=min(sl,zza[i].cnt1);
						sl-=min(sl,kk);
					}
				}
				j++;
			}
		}
		cout<<ans<<endl;
	}
	return 0;
}
