#include<bits/stdc++.h>
using namespace std;
const int N=1e5+5;
int n,cnt[2][2];
string str;
bool s[2][N],t[2][N];
int upd(int x,int p){
	while(p<=n&&t[x][p]) cnt[x][s[x][p]]++,p++;
	return p;
}
void solve(){
	memset(s,0,sizeof(s));
	memset(t,0,sizeof(t));
	memset(cnt,0,sizeof(cnt));
	cin>>n;
	for(int k=0;k<2;k++){
		cin>>str;
		for(int i=0;i<n;i++) s[k][i+1]=str[i]-'0';
	}
	for(int k=0;k<2;k++){
		cin>>str;
		for(int i=0;i<n;i++) t[k][i+1]=str[i]-'0';
	}
	int j=0,k[2]={0,0},ans=0;
	for(int i=1,cur;i<=n;i++){
		j++,k[0]=max(k[0],j),k[1]=max(k[1],j);
		k[0]=upd(0,k[0]),k[1]=upd(1,k[1]);
		if(k[0]>=k[1]) cur=0;
		else cur=1;
		if(t[cur][i]==0&&t[cur^1][i]==0){
			ans+=(s[cur][i]==s[cur^1][i]);
		}else if(t[cur][i]==1&&t[cur^1][i]==1){
			if(cnt[cur][1]>0&&cnt[cur^1][1]>0){
				cnt[cur][1]--,cnt[cur^1][1]--;
				ans++;
			}else if(cnt[cur][0]>0&&cnt[cur^1][0]>0){
				cnt[cur][0]--,cnt[cur^1][0]--;
				ans++;
			}else if(cnt[cur][1]>0){
				cnt[cur][1]--,cnt[cur^1][0]--;
			}else cnt[cur][0]--,cnt[cur^1][1]--;
		}else{
			if(cnt[cur][s[cur^1][i]]>0) cnt[cur][s[cur^1][i]]--,ans++;
			else cnt[cur][s[cur^1][i]^1]--;
		}
	}
	cout<<ans<<"\n";
}
int main(){
	freopen("edit.in","r",stdin);
	freopen("edit.out","w",stdout);
	ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
	int T;
	cin>>T;
	while(T--) solve();
	return 0;
}
