#include using namespace std; const int N=100005; int T,n,l1[N],r1[N],d1[N],l2[N],r2[N],d2[N],p1,p2,ans,len; char s1[N],s2[N],t1[N],t2[N]; int main(){ freopen("edit.in","r",stdin); freopen("edit.out","w",stdout); scanf("%d",&T); while(T--){ scanf("%d",&n); scanf("%s%s",s1+1,s2+1); scanf("%s%s",t1+1,t2+1); p1=0,p2=0,ans=0; for(int i=1;i<=n;i++){ if(t1[i]=='1'){ p1++; for(int j=i;j<=n;j++){ if(s1[j]=='1') d1[p1]++; if(j==n||t1[j+1]=='0'){ l1[p1]=i,r1[p1]=j; i=j; break; } } } else{ p1++; l1[p1]=i,r1[p1]=i; if(s1[i]=='1') d1[p1]++; } } for(int i=1;i<=n;i++){ if(t2[i]=='1'){ p2++; for(int j=i;j<=n;j++){ if(s2[j]=='1') d2[p2]++; if(j==n||t2[j+1]=='0'){ l2[p2]=i,r2[p2]=j; i=j; break; } } } else{ p2++; l2[p2]=i,r2[p2]=i; if(s2[i]=='1') d2[p2]++; } } for(int i=1,j=1;i<=p1&&j<=p2;){ if(r1[i]==r2[j]){ len=r1[i]-l1[i]+1; ans+=int(min(d1[i],d2[j])+len-max(d1[i],d2[j])); i++,j++; } else if(r1[i]>r2[j]){ len=r2[j]-l2[j]+1; int t=min(len,min(d1[i],d2[j])); ans+=t+len-d2[j]; d1[i]-=t,l1[i]=r2[j]+1; j++; } else{ len=r1[i]-l1[i]+1; int t=min(len,min(d1[i],d2[j])); ans+=t+len-d1[i]; d2[j]-=t,l2[j]=r1[i]+1; i++; } } printf("%d\n",ans); for(int i=1;i<=p1;i++) d1[i]=0; for(int i=1;i<=p2;i++) d2[i]=0; } return 0; }