#include<bits/stdc++.h>
using namespace std;
const int N=1e5+5;
char x[N],y[N];
char Sx[N],Sy[N];
int T,n,ans,res,now;
int xh0,xh1,yh0,yh1;
void Clear_x(){
	if(xh0>0){
		if(res>0){
			now=min(res,xh0);
			ans+=now,res-=now;
			yh0-=now;
		}
	}else ans+=xh0;
	if(xh1>0){
		if(res>0){
			now=min(res,xh1);
			ans+=now,res-=now;
			yh1-=now;
		}
	}else ans+=xh1;
	xh0=xh1=0;
}
void Clear_y(){
	if(yh0>0){
		if(res>0){
			now=min(res,yh0);
			ans+=now,res-=now;
			xh0-=now;
		}
	}else ans+=yh0;
	if(yh1>0){
		if(res>0){
			now=min(res,yh1);
			ans+=now,res-=now;
			xh1-=now;
		}
	}else ans+=yh1;
	yh0=yh1=0;
}
int main(){
	freopen("edit.in","r",stdin);
	freopen("edit.out","w",stdout);
	scanf("%d",&T);
	while(T--){
		scanf("%d",&n);
		scanf("%s",x+1);
		scanf("%s",y+1);
		scanf("%s",Sx+1);
		scanf("%s",Sy+1);
		ans=res=0;
		for(int i=1;i<=n;++i){
			if(Sx[i]=='0' && Sy[i]=='0'){
				if(x[i]==y[i]) ++ans;
				Clear_x(); Clear_y();
				res=0; continue;
			}
			if(Sx[i]=='0'){
				Clear_x(); res=0;
				if(x[i]==y[i]){
					++ans;
					continue;
				}
				if(x[i]=='1') --yh1,++yh0;
				else --yh0,++yh1;
				++ans;
				continue;
			}
			if(Sy[i]=='0'){
				Clear_y(); res=0;
				if(x[i]==y[i]){
					++ans;
					continue;
				}
				if(y[i]=='1') --xh1,++xh0;
				else --xh0,++xh1;
				++ans;
				continue;
			}
			++res;
			if(x[i]=='1') ++xh1;
			else ++xh0;
			if(y[i]=='1') ++yh1;
			else ++yh0;
		}
		Clear_x(); Clear_y();
		printf("%d\n",ans);
	}
	return 0;
} 
