#include <bits/stdc++.h>
using namespace std;
const int kMaxN=1e5+100;
int T,t,n,l[kMaxN],r[kMaxN],L[kMaxN],R[kMaxN],s[2][kMaxN],S[2][kMaxN],x,y,ans;
string a,b,c,d;
int main(){
freopen("edit.in","r",stdin);
freopen("edit.out","w",stdout);
ios::sync_with_stdio(0),cin.tie(0);
for(cin>>T;T--;ans=0){
cin>>n>>a>>b>>c>>d,x=y=1;
for(int i=0;i<n;i++){
if(c[i]=='0'){
r[x]=i,x++,l[x]=i+1;
}else{
s[a[i]-'0'][x]++;
}
if(d[i]=='0'){
R[y]=i,y++,L[y]=i+1;
}else{
S[b[i]-'0'][y]++;
}
}
r[x]=n,R[y]=n;
for(int i=1,j=1;i<=x||j<=y;){
if(r[i]==R[j]){
r[i]<n&&(ans+=a[r[i]]==b[R[j]]);
ans+=min(s[0][i],S[0][j])+min(s[1][i],S[1][j]);
i++,j++;
}else if(r[i]<R[j]){
if(r[i]<n){
S[a[r[i]]-'0'][j]?(S[a[r[i]]-'0'][j]--,ans++):(S[!(a[r[i]]-'0')][j]--);
}
ans+=min(s[0][i],S[0][j])+min(s[1][i],S[1][j]);
t=min(s[0][i],S[0][j]),s[0][i]-=t,S[0][j]-=t;
t=min(s[1][i],S[1][j]),s[1][i]-=t,S[1][j]-=t;
S[1][j]-=s[0][i],S[0][j]-=s[1][i];
i++;
}else{
if(R[j]<n){
s[b[R[j]]-'0'][i]?(s[b[R[j]]-'0'][i]--,ans++):(s[!(b[R[j]]-'0')][i]--);
}
ans+=min(S[0][j],s[0][i])+min(S[1][j],s[1][i]);
t=min(S[0][j],s[0][i]),S[0][j]-=t,s[0][i]-=t;
t=min(S[1][j],s[1][i]),S[1][j]-=t,s[1][i]-=t;
s[1][i]-=S[0][j],s[0][i]-=S[1][j];
j++;
}
}
for(int i=1;i<=x;i++){
l[i]=r[i]=s[0][i]=s[1][i]=0;
}
for(int i=1;i<=y;i++){
L[i]=R[i]=S[0][i]=S[1][i]=0;
}
cout<<ans<<'\n';
}
return 0;
}