#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn=100010;
int _;
int n;
string scur;
int py[maxn],pw[maxn];
bool sy[maxn],sw[maxn];
bool vy[maxn],vw[maxn];
signed main(){
	freopen("edit.in","r",stdin);
	freopen("edit.out","w",stdout);
	ios::sync_with_stdio(0);
	cin.tie(0),cout.tie(0);
	cin>>_;
	while(_--){
		cin>>n;int nn=n+1;
		cin>>scur;
		for(int i=1;i<=n;i++) sy[i]=(scur[i-1]-'0');sy[nn]=0;
		cin>>scur;
		for(int i=1;i<=n;i++) sw[i]=(scur[i-1]-'0');sw[nn]=0;
		cin>>scur;
		for(int i=1;i<=n;i++) vy[i]=(scur[i-1]-'0');vy[nn]=0;
		cin>>scur;
		for(int i=1;i<=n;i++) vw[i]=(scur[i-1]-'0');vw[nn]=0;
		int zy=1,zw=1;
		int cy=0,cw=0;
		int ans=0;
		while(zy<=n||zw<=n){
			if(zy<=zw){
				for(;zy<=nn;zy++){
					if(!vy[zy]) break;
					cy+=sy[zy];
				}
				if(zy>=zw)
					for(;zw<=nn;zw++){
						if(!vw[zw]) break;
						cw+=sw[zw];
					}
			}
			else{
				for(;zw<=nn;zw++){
					if(!vw[zw]) break;
					cw+=sw[zw];
				}
				if(zw>=zy)
					for(;zy<=nn;zy++){
						if(!vy[zy]) break;
						cy+=sy[zy];
					}
			}
			if(zy>zw){
				cw+=sw[zw],zw++;//(lw,rw]if(zw<=n)
				int qwq=max(cw-cy,0),qaq=max(cy-cw-(zy-zw),0);//1,0
				if(qwq>0){
					ans+=qwq;
					cw=0,cy=0;
				}
				else if(qaq>0){
					ans+=qaq;
					cy=zy-zw,cw=0;
				}
				else cy-=cw,cw=0;
			}
			else if(zw>zy){
				cy+=sy[zy],zy++;//(lw,rw]if(zy<=n) 
				int qwq=max(cy-cw,0),qaq=max(cw-cy-(zw-zy),0);//1,0
				if(qwq>0){
					ans+=qwq;
					cy=0,cw=0;
				}
				else if(qaq>0){
					ans+=qaq;
					cw=zw-zy,cy=0;
				}
				else cw-=cy,cy=0;
			}
			else{
				int qwq=cy-cw;
				ans+=abs(qwq);
				cy=cw=0;
				ans+=(sw[zw]!=sy[zy]);
				zy++,zw++;
			}
		}
		cout<<n-ans<<'\n';
	}
	return 0;
}
