#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
const int N=1000009;
int T,a[N],b[N],c[N],d[N],fae[N],faf[N],n;
struct node{
	int sum[2];
}e[N],f[N];
int main()
{
	freopen("edit.in","r",stdin);
	freopen("edit.out","w",stdout);
	scanf("%d",&T);
	while(T--)
	{
		int ans=0;
		scanf("%d",&n);
		for(int i=1;i<=n;i++)
			scanf("%1d",&a[i]);
		for(int i=1;i<=n;i++)
			scanf("%1d",&b[i]);
		for(int i=1;i<=n;i++)
			scanf("%1d",&c[i]),fae[i]=i;
		for(int i=1;i<=n;i++)
			scanf("%1d",&d[i]),faf[i]=i;
		for(int i=1;i<=n;i++)
			e[i].sum[0]=e[i].sum[1]=f[i].sum[0]=f[i].sum[1]=0;
		int last=0;
		for(int i=1;i<=n;i++)
		{
			if(c[i]==1) 
			{
				fae[i]=last+1;
				if(a[i]==0) e[last+1].sum[0]++;
				else e[last+1].sum[1]++;
			}
			else last=i;
		}
		last=0;
		for(int i=1;i<=n;i++)
		{
			if(d[i]==1) 
			{
				faf[i]=last+1;
				if(b[i]==0) f[last+1].sum[0]++;
				else f[last+1].sum[1]++;
			}
			else last=i;
		}
		for(int i=1;i<=n;i++)
		{
			if(c[i]!=d[i])
			{
				if(c[i]==0)
				{
					int p=faf[i];
					if(f[p].sum[a[i]]>0) f[p].sum[a[i]]--,ans++;
				}
				else 
				{
					int p=fae[i];
					if(e[p].sum[b[i]]>0) e[p].sum[b[i]]--,ans++;
				}
			}
		}
		for(int i=1;i<=n;i++)
		{
			if(c[i]==d[i]) 
			{
				if(c[i]==0&&d[i]==0) ans+=(a[i]==b[i]);
				else
				{
					int p=fae[i],q=faf[i];
					if(e[p].sum[0]>0&&f[q].sum[0]>0) e[p].sum[0]--,f[q].sum[0]--,ans++;
					else if(e[p].sum[1]>0&&f[q].sum[1]>0) e[p].sum[1]--,f[q].sum[1]--,ans++;
				}
			}
		}
		printf("%d\n",ans);
	}
	return 0;
}
