#include <bits/stdc++.h>
using namespace std;
int t,n,cnt1,cnt2,cnts0[100005],cnts1[100005],cntt0[100005],cntt1[100005];
string s1,s2,t1,t2;
int main(){
	freopen("edit.in","r",stdin);
	freopen("edit.out","w",stdout);
	ios::sync_with_stdio(0),cin.tie(0);
	cin>>t;
	while(t--){
		cin>>n>>s1>>s2>>t1>>t2,s1="#"+s1,s2="#"+s2,t1="#"+t1,t2="#"+t2,cnt1=cnt2=1;
//		if(t) continue;
		memset(cnts0,0,sizeof(cnts0)),memset(cnts1,0,sizeof(cnts1)),
		memset(cntt0,0,sizeof(cntt0)),memset(cntt1,0,sizeof(cntt1));
		int ans=0;
		for(int i=1;i<=n;i++){
			if(t1[i]=='0') cnt1++;
			else{
				cnts0[cnt1]+=(s1[i]=='0'),cnts1[cnt1]+=(s1[i]=='1');	
				if(i==n) cnt1++;
			}
		}
		cnt1--;
		for(int i=1;i<=n;i++){
			if(t2[i]=='0') cnt2++;
			else{
				cntt0[cnt2]+=(s2[i]=='0'),cntt1[cnt2]+=(s2[i]=='1');
				if(i==n) cnt2++;
			}
		}
		cnt2--;
		for(int i=1,j=1,k=1;k<=n;k++){
			if(t1[k]=='0'&&t2[k]=='0'){
				ans+=min(cntt0[j],cnts0[i])+min(cntt1[j],cnts1[i])+(s1[k]==s2[k]);
				i++,j++;
			}
			else if(t1[k]=='0'){
				if(s1[k]=='0') cnts0[i]++;
				else cnts1[i]++;
				ans+=min(cntt0[j],cnts0[i])+min(cntt1[j],cnts1[i]);
				if(cntt0[j]<cnts0[i]) cntt1[j]=cntt1[j]-cnts0[i]-cnts1[i]+cntt0[j],cntt0[j]=0;
				else if(cntt1[j]<cnts1[i]) cntt0[j]=cntt1[j]-cnts0[i]-cnts1[i]+cntt0[j],cntt1[j]=0;
				else cntt0[j]-=cnts0[i],cntt1[j]-=cnts1[i];
				i++;
			}
			else if(t2[k]=='0'){
				if(s2[k]=='0') cntt0[j]++;
				else cntt1[j]++;
				ans+=min(cntt0[j],cnts0[i])+min(cntt1[j],cnts1[i]);
				if(cnts0[i]<cntt0[j]) cnts1[i]=cnts1[i]-cntt0[j]-cntt1[j]+cnts0[i],cnts0[i]=0;
				else if(cnts1[i]<cntt1[j]) cnts0[i]=cnts1[i]-cntt0[j]-cntt1[j]+cnts0[i],cnts1[i]=0;
				else cnts0[i]-=cntt0[j],cnts1[i]-=cntt1[j];
				j++;
			}
			else if(k==n) ans+=min(cntt0[j],cnts0[i])+min(cntt1[j],cnts1[i]);
//			cout<<ans<<'\n';
		}
		cout<<ans<<'\n';
	}
	return 0;
}
/*
1
7
1111111
1101110
1100110
1011100
*/
