#include<bits/stdc++.h>
using namespace std;
int t,n,c,r,i,c10,c11,c20,c21;
string s1,s2,t1,t2;
queue<pair<int,int> >q1,q2;
int main(){
	freopen("edit.in","r",stdin);
	freopen("edit.out","w",stdout);
	cin>>t;
	while(t--){
		cin>>n>>s1>>s2>>t1>>t2;
		while(q1.size())q1.pop();
		while(q2.size())q2.pop();
		c10=c11=c20=c21=0;
		for(i=0;i<n;i++){
			if(t1[i]=='1'){
				if(s1[i]=='0')c10++;
				else c11++;
			}else{
				if(c10||c11)q1.push(make_pair(c10,c11));
				c10=c11=0;
				if(s1[i]=='0')q1.push(make_pair(1,0));
				else q1.push(make_pair(0,1));
			}
			if(t2[i]=='1'){
				if(s2[i]=='0')c20++;
				else c21++;
			}else{
				if(c20||c21)q2.push(make_pair(c20,c21));
				c20=c21=0;
				if(s2[i]=='0')q2.push(make_pair(1,0));
				else q2.push(make_pair(0,1));
			}
		}
		if(c10||c11)q1.push(make_pair(c10,c11));
		if(c20||c21)q2.push(make_pair(c20,c21));
		r=0;
		while(q1.size()&&q2.size()){
			c=min(q1.front().first,q2.front().first);
			r+=c;
			q1.front().first-=c;
			q2.front().first-=c;
			c=min(q1.front().second,q2.front().second);
			r+=c;
			q1.front().second-=c;
			q2.front().second-=c;
			if(!q1.front().first&&!q1.front().second)q1.pop();
			else if(!q2.front().first&&!q2.front().second)q2.pop();
			else if(q1.front().first&&q2.front().second){
				if(q1.front().first>q2.front().second){
					q1.front().first-=q2.front().second;
					q2.pop();
				}else{
					q2.front().second-=q1.front().first;
					q1.pop();
				}
			}else{
				if(q1.front().second>q2.front().first){
					q1.front().second-=q2.front().first;
					q2.pop();
				}else{
					q2.front().first-=q1.front().second;
					q1.pop();
				}
			}
		}
		cout<<r<<'\n';
	}
	fclose(stdin);
	fclose(stdout);
	return 0;
}
/*
1
6
011101
111010
111010
101101
*/
/*
1
10
0110111100
1111111100
1110000100
0110111011
*/
/*
1
9
101111111
100111000
110111011
011111111
*/
