#include<bits/stdc++.h>
using namespace std;
#define PI pair<int,int>
#define mkp make_pair
#define fir first
#define sec second
#define pb emplace_back
const int N=1e5+5,inf=0x3f3f3f3f;
int T,n,cnt[2][2],sum[N][2][2];
string s1,s2,t1,t2;
PI v1,v2;
int work(int l,int r){
if(l>r) return 0;
for(int i=0;i<2;++i) for(int j=0;j<2;++j) cnt[i][j]=0;
int ans=0;
v1=v2=mkp(0,0);
for(int i=l;i<=r;++i){
if(t1[i]=='1'&&t2[i]=='1'){
++cnt[0][s1[i]-'0'],++cnt[1][s2[i]-'0'];
continue;
}
if(t1[i]=='0'){
int res0=min(cnt[0][0],v2.fir),res1=min(cnt[0][1],v2.sec);
ans+=res0+res1,cnt[0][0]-=res0,cnt[0][1]-=res1;
if(v2.fir>res0) cnt[0][1]-=v2.fir-res0;
if(v2.sec>res1) cnt[0][0]-=v2.sec-res1;
v2=mkp(0,0);
++cnt[0][s1[i]-'0'],++cnt[1][s2[i]-'0'];
PI tmp=mkp(v1.fir+cnt[0][0],v1.sec+cnt[0][1]);
v1=tmp,cnt[0][0]=cnt[0][1]=0;
}
if(t2[i]=='0'){
int res0=min(cnt[1][0],v1.fir),res1=min(cnt[1][1],v1.sec);
ans+=res0+res1,cnt[1][0]-=res0,cnt[1][1]-=res1;
if(v1.fir>res0) cnt[1][1]-=v1.fir-res0;
if(v1.sec>res1) cnt[1][0]-=v1.sec-res1;
v1=mkp(0,0);
++cnt[0][s1[i]-'0'],++cnt[1][s2[i]-'0'];
PI tmp=mkp(v2.fir+cnt[1][0],v2.sec+cnt[1][1]);
v2=tmp,cnt[1][0]=cnt[1][1]=0;
}
}
cnt[0][0]+=v1.fir,cnt[0][1]+=v1.sec;
cnt[1][0]+=v2.fir,cnt[1][1]+=v2.sec;
int rs0=min(cnt[0][0],cnt[1][0]),rs1=min(cnt[0][1],cnt[1][1]);
ans+=rs0+rs1;
return ans;
}
void solve(){
cin>>n>>s1>>s2>>t1>>t2;
s1=" "+s1,s2=" "+s2,t1=" "+t1,t2=" "+t2;
int ans=0,last=0;
for(int i=1;i<=n;++i) if(t1[i]=='0'&&t2[i]=='0') ans+=(s1[i]==s2[i])+work(last+1,i-1),last=i;
ans+=work(last+1,n);
cout<<ans<<'\n';
}
signed main(){
auto file1=freopen("edit.in","r",stdin);
auto file2=freopen("edit.out","w",stdout);
ios::sync_with_stdio(0);
cin.tie(0);cout.tie(0);
cin>>T;
while(T--) solve();
return 0;
}