#include<bits/stdc++.h>
#define int long long
#define first first1
#define second second2
using namespace std;
struct STR{
char word;
char t;
};
vector <STR> s1;
vector <STR> s2;
struct ch{
int nfzero,fzero;
int nfone,fone;
};
ch first1;
ch second2;
int t,n;
void work(){
char x;int ans=0;
for(int i=1;i<=n;i++){
cin>>x;
s1.push_back({x,0});
}
for(int i=1;i<=n;i++){
cin>>x;
s2.push_back({x,0});
}
for(int i=1;i<=n;i++){
cin>>x;
s1[i].t=x;
}
for(int i=1;i<=n;i++){
cin>>x;
s2[i].t=x;
}
for(int i=1;i<s1.size();i++){
if(s1[i].t=='0' and s2[i].t=='0'){
if(s1[i].word==s2[i].word){
ans++;
}
continue;
}
if(s1[i].t=='1'){
if(s1[i].word=='0')first.fzero++;
else first.fone++;
}
if(s2[i].t=='1'){
if(s2[i].word=='0')second.fzero++;
else second.fone++;
}
if(s1[i].t=='0'){
if(s1[i].word=='0')first.nfzero++;
else first.nfone++;
}
if(s2[i].t=='0'){
if(s2[i].word=='0')second.nfzero++;
else second.nfone++;
}
}
int zero1=0,zero2=0,one1=0,one2=0;
if(first.fzero>=second.nfzero){
ans+=second.nfzero;
zero1=first.fzero-second.nfzero;
}else ans+=first.fzero;
if(first.fone>=second.nfone){
ans+=second.nfone;
one1=first.fone-second.nfone;
}else ans+=first.fone;
if(second.fzero>=first.nfzero){
ans+=first.nfzero;
zero2=second.fzero-first.nfzero;
}else ans+=second.fzero;
if(second.fone>=first.nfone){
ans+=first.nfone;
one2=second.fone-first.nfone;
}else ans+=second.fone;
cout<<ans+min(one1,one2)+min(zero1,zero2)<<endl;
return;
}
signed main(){
cin>>t;
for(int i=0;i<t;i++){
s1.push_back({0,0});
s2.push_back({0,0});
cin>>n;
work();
first1.fzero=0,first1.fone=0,first1.nfone=0,first1.nfzero=0;
second2.fzero=0,second2.fone=0,second2.nfzero=0,second2.nfone=0;
s1.clear();
s2.clear();
}
return 0;
}
谢谢各位大佬