#include<bits/stdc++.h>
using namespace std;
const int maxn=1e6+10;
int T,n;
int a[maxn],b[maxn],suma[maxn],sumb[maxn];
int cnta,ta[maxn],cntb,tb[maxn];
int fai[maxn],fbi[maxn];
inline int rd(){
	int x=0,f=1;char s=getchar();
	while(s<'0'||s>'9'){
		if(s=='-')f=-1;
		s=getchar();
	}
	while(s>='0'&&s<='9'){
		x=x*10+s-'0';
		s=getchar();
	}
	return x*f;
}
int main(){
	freopen("edit.in","r",stdin);
  	freopen("edit.out","w",stdout);
	T=rd();
	while(T--){
		n=rd();
		string aa,bb,c,d;
		bool pda=0,pdb=0;
		cin>>aa;cin>>bb;cin>>c;cin>>d;
		for(int i=0;i<n;i++){
			a[i+1]=aa[i]-'0';suma[i+1]=suma[i]+a[i+1];
//			if(i!=0&&a[i+1]!=a[i])pda=1;
			b[i+1]=bb[i]-'0';sumb[i+1]=sumb[i]+b[i+1];
			if(c[i]=='0')ta[++cnta]=(i+1);
			if(d[i]=='0')tb[++cntb]=(i+1);
			if(c[i]!=d[i])pdb=1;
		}
		for(int i=1;i<n;i++)if(a[i]!=a[i+1])pda=1;
//		cout<<pda<<"***"<<suma[n]<<"******"<<sumb[n]<<endl;
//		for(int i=1;i<=n;i++){
//			cout<<a[i];
//		}
//		cout<<endl;
//		for(int i=1;i<=n;i++){
//			cout<<b[i];
//		}
//		cout<<endl;
		if(pda==0){
			int op=a[1];
			if(op==0){
				cout<<n-sumb[n]<<endl;
			}
			else{
				cout<<sumb[n]<<endl;
			}
			continue;
		}
		if(pdb==0){
			int used=0,ans=0;//used为上一个断点处 
			for(int i=1;i<=cnta;i++){
				if(a[ta[i]]==b[tb[i]])ans++;//若断点相等ans++ 
				int ca=suma[ta[i]-1]-suma[used],caa=ta[i]-used-1;//ca为一的个数,caa为区间总数 
				int cb=sumb[tb[i]-1]-sumb[used],cbb=tb[i]-used-1;
				int ao=caa-ca,bo=cbb-cb;
				ans+=(min(ao,bo)+min(ca,cb));
				used=ta[i];
			}
			cout<<ans<<endl;
			continue;
		}
		if(cnta==1&&cntb==1){
			//cout<<"fuck"<<endl;
			int fa=suma[ta[1]-1]-suma[0];
			int fb=sumb[ta[1]-1]-sumb[0];
			for(int i=1;i<=fa;i++){
				fai[i]=1;
			}
			for(int i=1;i<=fb;i++){
				fbi[i]=1;
			}
			for(int i=fa+1;i<ta[1];i++)fai[i]=0;
			for(int i=fb+1;i<tb[1];i++)fbi[i]=0;
			int sa=suma[n]-suma[ta[1]];
			int sb=sumb[n]-sumb[tb[1]];
			for(int i=n;i>=ta[1]+1;i--){
				if(sa>0){
					sa--;
					fai[i]=1;
				}
				else{
					fai[i]=0;
				}
			}
			for(int i=n;i>=tb[1]+1;i--){
				if(sb>0){
					sb--;
					fbi[i]=1;
				}
				else{
					fbi[i]=0;
				}
			}
			int ans=0,sum=0;fai[ta[1]]=a[ta[1]];fbi[tb[1]]=b[tb[1]];
			for(int i=1;i<=n;i++){
				if(fai[i]==fbi[i])ans++;
				else{
					sum++;
				}
			}
			cout<<ans<<endl;
			continue;
		}
		int op=a[1];
		if(op==0){
			cout<<n-sumb[n]<<endl;
		}
		else{
			cout<<sumb[n]<<endl;
		}
	}
	//system("pause");
	return 0;
}
/*
3
6
011101
111010
111010
101101
10
0110111100
1111111100
1110000100
0110111011
9
101111111
100111000
110111011
011111111

1
10
1011011010
0110101101
1110111101
1110111101
*/
