rt(去freopen)
#include<bits/stdc++.h>
#define rep(i,m,n) for(int i=m;i<=n;i++)
#define mem(s,t) memset(s,t,sizeof s)
using namespace std;
const int N=1e5+5;
string s1,s2,t1,t2;
int from1[N],from2[N],cnt1[N][2],cnt2[N][2],n,t,tot1,tot2,flag1,flag2,ans;
void solve()
{
cin>>n>>s1>>s2>>t1>>t2;
tot1=tot2=flag1=flag2=ans=0,mem(from1,0),mem(from2,0),mem(cnt1,0),mem(cnt2,0);
rep(i,0,n-1)
{
if(t1[i]=='1')
{
if(!flag1)tot1++,flag1=1;
from1[i]=tot1;
if(s1[i]=='0')cnt1[from1[i]][0]++;
else cnt1[from1[i]][1]++;
}
else if(t1[i]=='0')flag1=0;
if(t2[i]=='1')
{
if(!flag2)tot2++,flag2=1;
from2[i]=tot2;
if(s2[i]=='0')cnt2[from2[i]][0]++;
else cnt2[from2[i]][1]++;
}
else if(t2[i]=='0')flag2=0;
}
// rep(i,0,n-1)cout<<from1[i]<<" ";
// cout<<endl;
// rep(i,0,n-1)cout<<from2[i]<<" ";
// cout<<endl;
// rep(i,1,tot1)cout<<cnt1[i][0]<<" ";
// cout<<endl;
// rep(i,1,tot1)cout<<cnt1[i][1]<<" ";
// cout<<endl;
// rep(i,1,tot2)cout<<cnt2[i][0]<<" ";
// cout<<endl;
// rep(i,1,tot2)cout<<cnt2[i][1]<<" ";
// cout<<endl;
rep(i,0,n-1)
{
if(t1[i]=='0'&&t2[i]=='0')
{
if(s1[i]==s2[i])ans++;
// cout<<"00 "<<s1[i]<<" "<<s2[i]<<endl;
}
else if(t1[i]=='1'&&t2[i]=='0')
{
// cout<<"10 "<<s2[i]<<" "<<cnt1[from1[i]][0]<<" "<<cnt1[from1[i]][1]<<endl;
if(s2[i]=='0'&&cnt1[from1[i]][0])cnt1[from1[i]][0]--,ans++;
else if(s2[i]=='1'&&cnt1[from1[i]][1])cnt1[from1[i]][1]--,ans++;
else if(cnt1[from1[i]][0]>=cnt1[from1[i]][1])cnt1[from1[i]][0]--;
else cnt1[from1[i]][1]--;
// cout<<ans<<endl;
}
else if(t1[i]=='0'&&t2[i]=='1')
{
// cout<<"01 "<<s1[i]<<" "<<cnt2[from2[i]][0]<<" "<<cnt2[from2[i]][1]<<endl;
if(s1[i]=='0'&&cnt2[from2[i]][0])cnt2[from2[i]][0]--,ans++;
else if(s1[i]=='1'&&cnt2[from2[i]][1])cnt2[from2[i]][1]--,ans++;
else if(cnt2[from2[i]][0]>=cnt2[from2[i]][1])cnt2[from2[i]][0]--;
else cnt2[from2[i]][1]--;
// cout<<ans<<endl;
}
else if(t1[i]=='1'&&t2[i]=='1')
{
// cout<<"11 "<<cnt1[from1[i]][0]<<" "<<cnt2[from2[i]][0]<<" "<<cnt1[from1[i]][1]<<" "<<cnt2[from2[i]][1]<<endl;
if(min(cnt1[from1[i]][0],cnt2[from2[i]][0])>=min(cnt1[from1[i]][1],cnt2[from2[i]][1])&&min(cnt1[from1[i]][0],cnt2[from2[i]][0]))cnt1[from1[i]][0]--,cnt2[from2[i]][0]--,ans++;
else if(min(cnt1[from1[i]][0],cnt2[from2[i]][0])<min(cnt1[from1[i]][1],cnt2[from2[i]][1])&&min(cnt1[from1[i]][1],cnt2[from2[i]][1]))cnt1[from1[i]][1]--,cnt2[from2[i]][1]--,ans++;
// cout<<ans<<endl;
}
}
cout<<ans<<endl;
}
int main()
{
cin>>t;
while(t--)solve();
return 0;
}