#include<bits/stdc++.h>
using namespace std;
int Sa[2000005];
int Sc[200005];
int Ta[200005];
int Tc[200005];
int lsta[200005];
int lstc[200005];
int nxta[200005];
int nxtc[200005];
int T,n;
queue<int> zero;
queue<int> one;
void ini(){
	while(!one.empty()) one.pop();
	while(!zero.empty()) zero.pop();
	memset(Sa,0,sizeof Sa);
	memset(Sc,0,sizeof Sc);
	memset(Ta,0,sizeof Ta);
	memset(Tc,0,sizeof Tc);
	memset(lsta,0,sizeof lsta);
	memset(lstc,0,sizeof lstc);
	memset(nxta,0,sizeof nxta);
	memset(nxtc,0,sizeof nxtc);
}
int main(){
	freopen("edit.in","r",stdin);
	freopen("edit.out","w",stdout);
	cin>>T;
	while(T--){
		cin>>n;
		int sp1=1,sp2=1,sp3=1;
		for(int i=1;i<=n;i++){
			char a;
			cin>>a;
			Sa[i]=a-'0';
			if(Sa[i]!=Sa[i-1]&&i!=1) sp1=0;
		}
		for(int i=1;i<=n;i++){
			char a;
			cin>>a;
			Sc[i]=a-'0';
		}
		int las=0;
		for(int i=1;i<=n;i++){
			char a;
			cin>>a;
			Ta[i]=a-'0';
			//cout<<Ta[i]<<" "<<i<<'\n';
			if(Ta[i]==0){
				//cout<<"i: "<<i<<'\n';
				lsta[i]=i;
				las=i+1;
			}
			else lsta[i]=las;
		}
		las=0;
		for(int i=1;i<=n;i++){
			char a;
			cin>>a;
			Tc[i]=a-'0';
			if(Tc[i]==0){
				lstc[i]=i;
				las=i+1;
			}
			else lstc[i]=las;
		}
		int nexa=n+1,nexc=n+1;
		for(int i=n+1;i>=1;i--){
			if(Ta[i]==0){
				nxta[i]=i;
				nexa=i-1;
			}
			else nxta[i]=nexa;
			if(Tc[i]==0){
				nxtc[i]=i;
				nexc=i-1;
			}
			else nxtc[i]=nexc;
			if(nxtc[i]!=nxta[i]) sp2=0;
		}
		int ans=0;
		if(sp1){
			if(Sa[1]==1){
				for(int i=1;i<=n;i++){
					if(Sc[i]==1) ans++;
				}
			}
			if(Sa[1]==0){
				for(int i=1;i<=n;i++){
					if(Sc[i]==0) ans++;
				}
			}
			cout<<ans<<'\n';
			ini();
			continue;
		}
//		if(sp2){
//			
//		}
		ans=0;
		for(int i=1,j=0,k=1;i<=n,j<=n+1;i++){
			int l=lstc[lsta[i]],r=nxtc[nxta[i]];
		//	cerr<<"i: "<<i<<" l: "<<l<<" r: "<<r<<'\n';
			while(j<r){
				j++;
			//	cerr<<"j: "<<j<<"\n";
				
				if(Sc[j]==0) zero.push(j);
				else one.push(j);
			}
			while(!zero.empty()&&zero.front()<l){
			//	cerr<<"zp: "<<'\n';
				zero.pop();
			}
			while(!one.empty()&&one.front()<l){
		//		cerr<<"op: "<<'\n';
				one.pop();
			}
			if (Sa[i]==1){
				
				if(!one.empty()){
			//		cout<<"one: "<<'\n';
					one.pop();
					ans++;
				}
			}
			if(Sa[i]==0){
				
				if(!zero.empty()){
		//			cerr<<"zero: "<<'\n';
					zero.pop();
					ans++;
				}
			}
			if(i==n) break;
		}
		cout<<ans<<'\n';
	}
//	for(int i=1;i<=n;i++){
//		cout<<Sa[i]<<' ';
//	}
//	cout<<endl;
//	for(int i=1;i<=n;i++){
//		cout<<Sc[i]<<' ';
//	}
//	cout<<endl;
//	for(int i=1;i<=n;i++){
//		cout<<lsta[i]<<' ';
//	}
//	cout<<endl;
//	for(int i=1;i<=n;i++){
//		cout<<lstc[i]<<' ';
//	}
//	cout<<endl;
//	for(int i=1;i<=n;i++){
//		cout<<nxta[i]<<' ';
//	}
//	cout<<endl;
//	for(int i=1;i<=n;i++){
//		cout<<nxtc[i]<<' ';
//	}
//	cout<<endl;
	
	return 0;
}
