#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int maxn=1e5+9;
int st[maxn];
int T,n;
string s1,s2;
string t1,t2;
ll num11=0,num10=0,num21=0,num20=0;
void init(){
	num11=0,num10=0,num21=0,num20=0;
	return ;
}
ll modify(){
	ll ans=0;
	ans+=min(num11,num21);
	ans+=min(num10,num20);
	return ans;	
}
void srh(int i){	
	if(s1[i]=='1')num11++;
	if(s1[i]=='0')num10++;
	if(s2[i]=='1')num21++;
	if(s2[i]=='0')num20++;
	return ;
}
void solve_C(){
	int st1,st2;
	for(int i=0;i<n;i++){
		if(t1[i]=='0'){
			st1=i;
		}
		if(t2[i]=='0'){
			st2=i;
		}
	}
	int stmn=min(st1,st2);
	int stmx=max(st1,st2);
	init();
	for(int i=0;i<stmn;i++){
		srh(i);
	}
	int lnum11=num11;
	int lnum10=num10;
	int lnum21=num21;
	int lnum20=num20;
	init();
	for(int i=stmx;i<n;i++){
		srh(i);
	}
	int rnum21=num21;
	int rnum20=num20;
	int rnum10=num10;
	int rnum11=num11;
	init();
	for(int i=stmn;i<stmx;i++){
		srh(i);
	}
	if(num10<num20){
		if(lnum10>lnum20&&st1>st2){
			num10+=lnum10-lnum20;
			if(num10>num20){
				num10=num20;
			}
			lnum10=lnum20;
		}
		if(rnum10>rnum20&&st1<st2){
			num10+=rnum10-rnum20;
			if(num10>num20){
				num10=num20;
			}
			rnum10=rnum20;
		}
	}
	else if(num20<num10){
		if(lnum20>lnum10&&st2>st1){
			num20+=lnum20-lnum10;
			if(num20>num10){
				num20=num10;
			}
			lnum20=lnum10;
		}
		if(rnum20>rnum10&&st2<st1){
			num20+=rnum20-rnum10;
			if(num20>num10){
				num20=num10;
			}
			rnum20=rnum10;
		}
	}
	if(num11<num21){
		if(lnum11>lnum21&&st1>st2){
			num11+=lnum11-lnum21;
			if(num11>num21){
				num11=num21;
			}
			lnum11=lnum21;
		}
		if(rnum11>rnum21&&st1<st2){
			num11+=rnum11-rnum21;
			if(num11>num21){
				num11=num21;
			}
			rnum11=rnum21;
		}
	}
	else if(num21<num11){
		if(lnum21>lnum11&&st2>st1){
			num21+=lnum21-lnum11;
			if(num21>num11){
				num21=num11;
			}
			lnum21=lnum11;
		}
		if(rnum21>rnum11&&st2<st1){
			num21+=rnum21-rnum11;
			if(num21>num11){
				num21=num11;
			}
			rnum21=rnum11;
		}
	}
	ll ans=0;
	ans+=min(num11,num21);
	ans+=min(num10,num20);
	ans+=min(rnum11,rnum21);
	ans+=min(lnum11,lnum21);
	ans+=min(rnum10,rnum20);
	ans+=min(lnum10,lnum20);
	cout<<ans<<endl;
	init();
	return ;
}
void solve(){
	ll ans=0;
	ll cnt=1;
	for(int i=0;i<n;i++){
		if(t1[i]=='0'){
			if(s1[i]==s2[i])ans++;
			st[cnt]=i;
			cnt++;
		}else if(t2[i]=='0'){
			if(s1[i]==s2[i])ans++;
			st[cnt]=i;
			cnt++;
		}
	}
	cnt--;
	if(cnt==2){
		solve_C();
		return ;
	}
	init();
	for(int i=0;i<st[1];i++){
		srh(i);
	}
	ans+=modify();
	init(); 
	for(int i=st[cnt]+1;i<n;i++){
		srh(i);
	}
	ans+=modify();
	init();
	for(int i=1;i<cnt;i++){
		for(int j=st[i]+1;j<st[i+1];j++){
			srh(j);
		}
		ans+=modify();
		init();
	}
	cout<<ans<<endl;
}
int main(){
	freopen("edit.in","r",stdin);
	freopen("edit.out","w",stdout);
	cin>>T;
	while(T--){
		memset(st,0,sizeof(st));
		cin>>n;
		cin>>s1>>s2;
		cin>>t1>>t2;
		solve();
	}
	fclose(stdin);
	fclose(stdout);
	return 0;
}
