#include<bits/stdc++.h>
#define afor(x,y,z) for(int x=(y);x<=(z);x++)
#define bfor(x,y,z) for(int x=(y);x>=(z);x--)
using namespace std;
typedef long long ll;
const int N=100010;
struct {int num[2];}x[N],y[N];
int T,n,cnt,ans,totx,toty,belx[N],bely[N];
char a[N],b[N],s[N],t[N];
int main() {
freopen("edit.in","r",stdin);
freopen("edit.out","w",stdout);
scanf("%d",&T);
while(T--) {
scanf("%d%s%s%s%s",&n,a+1,b+1,s+1,t+1);
cnt=ans=totx=toty=0;
afor(i,1,n) afor(j,0,1) x[i].num[j]=y[i].num[j]=0;
afor(i,1,n) belx[i]=bely[i]=0;
afor(i,1,n) {
if((i==1||s[i-1]=='0')&&(i==n||s[i+1]=='0')) s[i]='0';
if((i==1||t[i-1]=='0')&&(i==n||t[i+1]=='0')) t[i]='0';
if(s[i]!='0') {
if(i==1||s[i-1]=='0') totx++;
x[totx].num[a[i]-'0']++,belx[i]=totx;
}
if(t[i]!='0') {
if(i==1||t[i-1]=='0') toty++;
y[toty].num[b[i]-'0']++,bely[i]=toty;
}
}
afor(i,1,n) {
if(s[i]=='0'&&t[i]=='0') {
ans+=(a[i]==b[i]);
continue;
}
if(s[i]=='0') {
if(y[bely[i]].num[a[i]-'0']) y[bely[i]].num[a[i]-'0']--,ans++;
else y[bely[i]].num[(a[i]-'0')^1]--;
continue;
}
if(t[i]=='0') {
if(x[belx[i]].num[b[i]-'0']) x[belx[i]].num[b[i]-'0']--,ans++;
else x[belx[i]].num[(b[i]-'0')^1]--;
continue;
}
if(x[belx[i]].num[1]&&y[bely[i]].num[1]) x[belx[i]].num[1]--,y[bely[i]].num[1]--,ans++;
else if(x[belx[i]].num[0]&&y[bely[i]].num[0]) x[belx[i]].num[0]--,y[bely[i]].num[0]--,ans++;
else {
x[belx[i]].num[0]?(x[belx[i]].num[0]--):(x[belx[i]].num[1]--);
y[bely[i]].num[0]?(y[bely[i]].num[0]--):(y[bely[i]].num[1]--);
}
}
printf("%d\n",ans);
}
fclose(stdin);
fclose(stdout);
return 0;
}