#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=1e5+5;
int T,n;
bool a[N],b[N],sa[N],sb[N],vis1[N],vis2[N];
char c;
int maxn; 
void init()
{
	for(int i=1;i<=n;++i)
	{
		cin>>c;
		a[i]=(c=='1');
	}
	for(int i=1;i<=n;++i)
	{
		cin>>c;
		b[i]=(c=='1');
	}
	for(int i=1;i<=n;++i)
	{
		cin>>c;
		sa[i]=(c=='1');
	}
	for(int i=1;i<=n;++i)
	{
		cin>>c;
		sb[i]=(c=='1');
	}	
	return ;
}
void dfs(int p)//swap(i,i+1)
{
	if(p==n)
	{
		int cnt=0;
		for(int i=1;i<=n;++i) cnt+=(a[i]==b[i]);
		maxn=max(maxn,cnt); 
		return;
	}
	dfs(p+1);
	if(sa[p]&&sa[p+1]) swap(a[p],a[p+1]),dfs(p+1),swap(a[p],a[p+1]);
	if(sb[p]&&sb[p+1]) swap(b[p],b[p+1]),dfs(p+1),swap(b[p],b[p+1]);
	if(sa[p]&&sa[p+1]&&sb[p]&&sb[p+1]) swap(a[p],a[p+1]),swap(b[p],b[p+1]),dfs(p+1),swap(b[p],b[p+1]),swap(a[p],a[p+1]);
	return;	
} 
void cas1()
{
	maxn=0;
	dfs(1);
	cout<<maxn<<'\n';
	return;
}
bool check2()
{
	for(int i=2;i<=n;++i) if(a[i]!=a[i-1]) return false;
	return true; 
}
void cas2()//A 
{
	maxn=0;
	for(int i=1;i<=n;++i) if(a[i]==b[i]) maxn++;
	cout<<maxn<<'\n';
}
bool checkB()
{
	for(int i=1;i<=n;++i) if(sa[i]!=sb[i]) return false;
	return true; 
}
int deaB(int L,int R)
{
	int cnt1=0,cnt2=0;
	for(int i=L;i<=R;++i)
	{
		cnt1+=(a[i]==1);
		cnt2+=(b[i]==1);
	}
	return R-L+1-abs(cnt1-cnt2);
}
void casB()
{
	int L,R,cnt=0,t=0;
	for(int i=1;i<=n;++i)
	{
		if(sa[i]==0&&t==1)
		{
			cnt+=(a[i]==b[i]);
			R=i-1;
			cnt+=deaB(L,R);	
			t=0;
			continue;
		}
		if(sa[i]==0&&t==0) 	cnt+=(a[i]==b[i]);
		if(sa[i]==1&&t==0) 	L=i,t=1;
	}
	if(t==1) cnt+=deaB(L,n);
	cout<<cnt<<'\n';
}
bool checkC()
{
	int cnta=0,cntb=0;
	for(int i=1;i<=n;++i) cnta+=(a[i]==0);
	for(int i=1;i<=n;++i) cntb+=(b[i]==0);
	return cnta==cntb==0;
}
//void casC()
//{
//	int z1,z2;
//	for(int i=1;i<=n;++i) if(sa[i]==0){z1=i;break;} 
//	for(int i=1;i<=n;++i) if(sb[i]==0){z2=i;break;}
//	int d[4]
//}
signed main()
{
	ios::sync_with_stdio(false);
	freopen("edit.in","r",stdin);
	freopen("edit.out","w",stdout);
	cin>>T;
	while(T--)
	{
		cin>>n;
		memset(a,0,sizeof(a));
		memset(b,0,sizeof(b));
		memset(sa,0,sizeof(sa));
		memset(sb,0,sizeof(sb));
		init();
		if(n<=10)
		{cas1();continue;}
		if(check2())
		{cas2();continue;}	
		if(checkB())
		{casB();continue;}	
	}
	return 0;
}
