#include<bits/stdc++.h>
using namespace std;
const int N = 2e5+10;
char s1[N],s2[N],t1[N],t2[N];
char ch;
int T,n,ans;
void init(){
	for(int i=0;i<=n;i++){
		s1[i]=ch;
		s2[i]=ch;
		t1[i]=ch;
		t2[i]=ch;
	}
	n=0;
	ans=0;
}

int main(){
	freopen("edit.in","r",stdin);
	freopen("edit.out","w",stdout);
	scanf("%d",&T);
	while(T--){
		init();
		scanf("%d",&n);
		scanf("%s",s1);
		scanf("%s",s2);
		scanf("%s",t1);
		scanf("%s",t2);
		int i=0,j=0;
		int acnt0=0,acnt1=0,bcnt0=0,bcnt1=0,li=-1,lj=-1;
		while(i<=n&&j<=n){
			while(i<n&&t1[i]=='1'){
				if(s1[i]=='0') acnt0++;
				else acnt1++;
				i++;
			}
			while(j<n&&t2[j]=='1'){
				if(s2[j]=='0') bcnt0++;
				else bcnt1++;
				j++;
			}
//			cout<<"i="<<i<<endl;
//			cout<<"j="<<j<<endl;
//			cout<<"acnt0="<<acnt0<<endl;
//			cout<<"acnt1="<<acnt1<<endl;
//			cout<<"bcnt0="<<bcnt0<<endl;
//			cout<<"bcnt1="<<bcnt1<<endl;
			if(j>i){
//				cout<<"type1"<<endl; 
				int limit=i-lj-1;//
				int res=0;
//				cout<<"limit="<<limit<<endl;
				if(bcnt0>=acnt0){
//					cout<<"the"<<endl;
					if(acnt0+res>limit){
//						cout<<"s"<<endl;
						int k=limit-res;
						bcnt0-=k;
						res=limit;
					}else{
//						cout<<"y"<<endl;
						res+=acnt0;
						bcnt0-=acnt0;
					}
				}else{
//					cout<<"roo"<<endl;
					if(bcnt0+res>limit){
//						cout<<"k"<<endl;
						int k=limit-res;
						bcnt0-=k;
						res=limit;
					}else{
//						cout<<"ie"<<endl;
						res+=bcnt0;
						bcnt0=0;
					}
				}
				if(bcnt1>=acnt1){
					if(acnt1+res>limit){
						int k=limit-res;
						bcnt1-=k;
						res=limit;
					}else{
						res+=acnt1;
						bcnt1-=acnt1;
					}
				}else{
					if(bcnt1+res>limit){
						int k=limit-res;
						bcnt1-=k;
						res=limit;
					}else{
						res+=bcnt1;
						bcnt1=0;
					}
				}
				acnt0=0,acnt1=0;
//				cout<<"res="<<res<<endl;
				ans+=res;//ÌØÅÐÃ»´ò 
//				cout<<"ans="<<ans<<endl;
//				if(s1[i]=='0'&&bcnt0>0){
//					ans++,bcnt0--;
//				}
				if(s1[i]=='0'){
					if(bcnt0>0){
						ans++,bcnt0--;
					}else if(bcnt1>0){
						bcnt1--;
					}
				}
//				if(s1[i]=='1'&&bcnt1>0){
//					ans++,bcnt1--;
//				}
				if(s1[i]=='1'){
					if(bcnt1>0){
						ans++,bcnt1--;
					}else if(bcnt0>0){
						bcnt0--;
					}
				}
//				cout<<"ans="<<ans<<endl;
				li=i;
				i++;
			}else if(i>j){
//				cout<<"type2"<<endl;
				int limit=j-li-1;
				int res=0;
//				cout<<"limit="<<limit<<endl;
				if(acnt0>=bcnt0){
					if(bcnt0+res>limit){
						int k=limit-res;
						acnt0-=k;
						res=limit;
					}else{
						res+=bcnt0;
						acnt0-=bcnt0;
					}
				}else{
					if(acnt0+res>limit){
						int k=limit-res;
						acnt0-=k;
						res=limit;
					}else{
						res+=acnt0;
						bcnt0=0;
					}
				}
				if(acnt1>=bcnt1){
					if(bcnt1+res>limit){
						int k=limit-res;
						acnt1-=k;
						res=limit;
					}else{
						res+=bcnt1;
						acnt1-=bcnt1;
					}
				}else{
					if(acnt1+res>limit){
						int k=limit-res;
						acnt1-=k;
						res=limit;
					}else{
						res+=acnt1;
						acnt1=0;
					}
				}
				bcnt0=0,bcnt1=0;
				ans+=res;
//				cout<<"res="<<res<<endl;
//				cout<<"ans="<<ans<<endl;
//				if(s2[j]=='0'&&acnt0>0){
//					ans++,acnt0--;
//				}
				if(s2[j]=='0'){
					if(acnt0>0){
						ans++,acnt0--;
					}else if(acnt1>0){
						acnt1--;
					}
				}
//				if(s2[j]=='1'&&acnt1>0){
//					ans++,acnt1--;
//				}
				if(s2[j]=='1'){
					if(acnt1>0){
						ans++,acnt1--;
					}else if(acnt0>0){
						acnt0--;
					}
				}
//				cout<<"ans="<<ans<<endl;
				lj=j;
				j++;
			}else{
//				cout<<"type3"<<endl;
				int res=0;
				res+=min(acnt0,bcnt0);
				res+=min(acnt1,bcnt1);
//				cout<<"res="<<res<<endl;
				ans+=res;
//				cout<<"ans="<<ans<<endl;
				if(i!=n&&j!=n){
					if(s1[i]==s2[j]){
						ans++;
					}
				}
//				cout<<"ans="<<ans<<endl;
				acnt1=0,acnt0=0,bcnt1=0,bcnt0=0;
				li=i,lj=j;
				i++,j++;
			}
		}
		printf("%d\n",ans);
	}
	return 0;
}
/*
1
8
11111101
10000010
00001110
00010010
1
6
011101
111010
111010
101101

*/
