#include <bits/stdc++.h>
using namespace std;

int t;
int n;
string a, b, x;
bool visa[100005], visb[100005];
struct ln{
	int l, r;
	int cnt[5], tot;
	int id;
	ln (){
		l = r = cnt[0] = cnt[1] = tot = id = 0;
	}
	ln (int L, int R, int Cnt0, int Cnt1, int Tot, int Id){
		l = L, r = R, cnt[0] = Cnt0, cnt[1] = Cnt1, tot = Tot, id = Id;
	}
	void prt(){
		cout << l << ' ' << r << ' ' << cnt[0] << ' ' << cnt[1] << ' ' << tot << ' ' << id << endl;
	}
} lna[100005], lnb[100005];
int cnta = 0, cntb = 0;
int ida[100005], idb[100005];
void mian(){
	cnta = cntb = 0;
	for(int i = 1;i <= n;i++)
		lna[i] = lnb[i] = ln(), visa[i] = visb[i] = ida[i] = idb[i] = 0;
	cin >> n >> a >> b;
	cin >> x;
	for(int i = 0;i < n;i++)
		visa[i] = (bool)(x[i] - '0');
	cin >> x;
	for(int i = 0;i < n;i++)
		visb[i] = (bool)(x[i] - '0');
	int sl = -1, c0 = 0, c1 = 0;
	for(int i = 0;i <= n;i++)
		if(visa[i]){
			if(sl == -1)
				sl = i;
			if(a[i] == '0')
				c0++;
			else
				c1++;
		}
		else{
			if(sl != -1){
				cnta++, lna[cnta] = ln(sl, i - 1, c0, c1, c0 + c1, cnta);
				for(int j = sl;j < i;j++)
					ida[j] = cnta;
				sl = -1, c0 = 0, c1 = 0;
			}
		}
	for(int i = 0;i <= n;i++)
		if(visb[i]){
			if(sl == -1)
				sl = i;
			if(b[i] == '0')
				c0++;
			else
				c1++;
		}
		else{
			if(sl != -1){
				cntb++, lnb[cntb] = ln(sl, i - 1, c0, c1, c0 + c1, cntb);
				for(int j = sl;j < i;j++)
					idb[j] = cntb;
				sl = -1, c0 = 0, c1 = 0;
			}
		}
//	for(int i = 1;i <= cnta;i++)
//		lna[i].prt(), lnb[i].prt();
	int ans = 0;
	for(int i = 0;i < n;i++)
		if(!visa[i] && !visb[i] && a[i] == b[i])
			ans++;
	for(int i = 0;i < n;i++)
		if(!visa[i]){
			int id = idb[i];
			if(lnb[id].cnt[(int)(a[i] - '0')] > 0)
				lnb[id].cnt[(int)(a[i] - '0')]--, lnb[id].tot--, ans++;
		}
	for(int i = 0;i < n;i++)
		if(!visb[i]){
			int id = ida[i];
			if(lna[id].cnt[(int)(b[i] - '0')] > 0)
				lna[id].cnt[(int)(b[i] - '0')]--, lna[id].tot--, ans++;
		}
	for(int i = 0;i < n;i++)
		if(visa[i] && visb[i]){
			int ia = ida[i], ib = idb[i];
			if(lna[ia].cnt[0] > 0 && lnb[ib].cnt[0] > 0)
				lna[ia].cnt[0]--, lnb[ib].cnt[0]--, lna[ia].tot--, lnb[ib].tot--, ans++;
			else if(lna[ia].cnt[1] > 0 && lnb[ib].cnt[1] > 0)
				lna[ia].cnt[1]--, lnb[ib].cnt[1]--, lna[ia].tot--, lnb[ib].tot--, ans++;
		}
	cout << ans << endl;
	return ;
}

int main(){
	freopen("edit.in", "r", stdin);
	freopen("edit.out", "w", stdout);
	cin >> t;
	for(int T = 1;T <= t;T++)
		mian();
	return 0;
} 
