#include<bits/stdc++.h>
using namespace std;
#define fir first
#define sec second
const int maxn=1e5+5;
string s1,s2,can1,can2;
int t;
int sum10[maxn],sum20[maxn],sum11[maxn],sum21[maxn];
pair<pair<int,int>,int> len[maxn];
int main()
{
	freopen("edit.in","r",stdin);
	freopen("edit.out","w",stdout);
	cin>>t;
	while(t--)
	{
		int n,sum=0,ans=0;
		cin>>n>>s1>>s2>>can1>>can2;
		s1=' '+s1,s2=' '+s2,can1=' '+can1,can2=' '+can2;
		for(int i=1;i<=n;i++)
		{
			if((can1[i]=='1'&&can1[i-1]=='0'&&can1[i+1]=='0')||(can1[i]=='1'&&i==1&&can1[i+1]=='0')||(can1[i]=='1'&&i==n&&can1[i-1]=='0'))
				can1[i]='0';
			sum10[i]=sum10[i-1]+(s1[i]=='0');
			sum11[i]=sum11[i-1]+(s1[i]=='1');
		}
		for(int i=1;i<=n;i++)
		{
			if((can2[i]=='1'&&can2[i-1]=='0'&&can2[i+1]=='0')||(can2[i]=='1'&&i==1&&can2[i+1]=='0')||(can2[i]=='1'&&i==n&&can2[i-1]=='0'))
				can2[i]='0';
			sum20[i]=sum20[i-1]+(s2[i]=='0');
			sum21[i]=sum21[i-1]+(s2[i]=='1');
		}
		bool ok1=0,ok2=0;
		int l1=0,l2=0;
		for(int i=1;i<=n;i++)
		{
			if(can1[i]=='1'&&!ok1)
				l1=i,ok1=1;
			else if(can1[i]=='1'&&ok1&&(can1[i+1]=='0'||i==n))
			{
				if(l2&&ok2)
					l1=0,ok1=0;
				else
				{
					len[++sum]={{l1,i},1};
					l1=0,ok1=0;
				}
			}
			if(can2[i]=='1'&&!ok2)
				l2=i,ok2=1;
			else if(can2[i]=='1'&&ok2&&(can2[i+1]=='0'||i==n))
			{
				if(l1&&ok1)
					l2=0,ok2=0;
				else
				{
					len[++sum]={{l2,i},2};
					l2=0,ok2=0;
				}
			}
			if(can1[i]=='0'&&can2[i]=='0')
				ans+=(s1[i]==s2[i]);
		}
		int opt0=0,opt1=0,newr=0;
		for(int i=1;i<=sum;i++)
		{
			auto x=len[i],y=len[i+1];
			int num10,num11,num20,num21,need1,need0;
			if(newr)
				x.fir.fir=newr+1;
			if(x.fir.fir>x.fir.sec)
			{
				opt1=opt0=0;
				newr=0;
				continue;
			}
//			cout<<x.fir.fir<<" "<<x.fir.sec<<" "<<x.sec<<"\n";
			if(x.fir.fir<=y.fir.fir&&(x.fir.sec>=y.fir.fir&&x.fir.sec<=y.fir.sec)&&i!=sum)
			{
				if(x.sec==1)
				{
					num10=sum10[x.fir.sec]-sum10[x.fir.fir-1]-opt0,num11=sum11[x.fir.sec]-sum11[x.fir.fir-1]-opt1,num20=sum20[y.fir.sec]-sum20[y.fir.fir-1],num21=sum21[y.fir.sec]-sum21[y.fir.fir-1];
					need0=sum20[y.fir.fir-1]-sum20[x.fir.fir-1],need1=sum21[y.fir.fir-1]-sum21[x.fir.fir-1];
					ans+=min(num10,need0)+min(num11,need1);
					num10-=min(num10,need0),num11-=min(num11,need1);
					ans+=min(num11,num21)+min(num10,num20);
					opt0=min(num10,num20),opt1=min(num11,num21);
				}
				else
				{
					num10=sum10[y.fir.sec]-sum10[y.fir.fir-1],num11=sum11[y.fir.sec]-sum11[y.fir.fir-1],num20=sum20[x.fir.sec]-sum20[x.fir.fir-1]-opt0,num21=sum21[x.fir.sec]-sum21[x.fir.fir-1]-opt1;
					need0=sum10[y.fir.fir-1]-sum10[x.fir.fir-1],need1=sum11[y.fir.fir-1]-sum11[x.fir.fir-1];
					ans+=min(num20,need0)+min(num21,need1);
					num20-=min(num20,need0),num21-=min(num21,need1);
					ans+=min(num11,num21)+min(num10,num20);
					opt0=min(num10,num20),opt1=min(num11,num21);
				}
				newr=x.fir.sec;
			}
			else
			{
				if(x.sec==1)
				{
					need0=sum20[x.fir.sec]-sum20[x.fir.fir-1],need1=sum21[x.fir.sec]-sum21[x.fir.fir-1];
					num10=sum10[x.fir.sec]-sum10[x.fir.fir-1]-opt0,num11=sum11[x.fir.sec]-sum11[x.fir.fir-1]-opt1;
					ans+=min(num10,need0)+min(num11,need1);
				}
				else
				{
					need0=sum10[x.fir.sec]-sum10[x.fir.fir-1],need1=sum11[x.fir.sec]-sum11[x.fir.fir-1];
					num20=sum20[x.fir.sec]-sum20[x.fir.fir-1]-opt0,num21=sum21[x.fir.sec]-sum21[x.fir.fir-1]-opt1;
					ans+=min(num20,need0)+min(num21,need1);
				}
				opt1=opt0=0;
				newr=0;
			}
		}
		cout<<ans<<"\n";
	}
	return 0;
}
