#include<cstdio>
#include<cstring>
#include<vector>

const int N=1e5+1;

int n;
int a[N], b[N], c[N], d[N];
bool A=1, B=1, C=1;

void read() {
	char ch=getchar();
	while(ch<'0'||ch>'1') {
		ch=getchar();
	}
	for(int i=1; i<=n; i++) {
		a[i]=ch-'0';
		if(i!=1&&a[i]!=a[i-1]) {
			A=0;
		}
		ch=getchar();
		
	}
	
	ch=getchar();
	while(ch<'0'||ch>'1') {
		ch=getchar();
	}
	for(int i=1; i<=n; i++) {
		b[i]=ch-'0';
		ch=getchar();
	}
	
	ch=getchar();
	while(ch<'0'||ch>'1') {
		ch=getchar();
	}
	for(int i=1; i<=n; i++) {
		c[i]=ch-'0';
		ch=getchar();
	}
	
	ch=getchar();
	while(ch<'0'||ch>'1') {
		ch=getchar();
	}
	for(int i=1; i<=n; i++) {
		d[i]=ch-'0';
		if(d[i]!=c[i]) {
			B=0;
		}
		ch=getchar();
	}
	return;	
}

int main() {
	freopen("edit.in", "r", stdin);
	freopen("edit.out", "w", stdout);
	int t;
	scanf("%d", &t);
	while(t--) {
		A=B=C=1;
		scanf("%d", &n);
		read();
		
		if(A) {
			int ans=0;
			for(int i=1; i<=n; i++) {
				if(b[i]==a[1]) {
					ans++;
				}
			}
			printf("%d\n", ans);
		} 
		else if(B) {
			int g=0, h=0, i=0, j=0, ans=0;
			for(int u=1; u<=n; u++) {
				if(a[u]) {
					g++;
				} else {
					i++;
				}
				if(b[u]) {
					h++;
				} 
				else {
					j++;
				}
				if(!c[u]) {
					ans+=std::min(g, h)+std::min(i, j);
					g=h=i=j=0;
				}
			}
			ans+=std::min(g, h)+std::min(i, j);
			printf("%d\n", ans);
		} else {
			int l=0, r=1, L=0, R=1;
			for(int i=1; i<=n; i++) {
				if(!a[i]) {
					l=r=i;
					for(int j=i; c[j]; j--, l--);
					for(int j=i; c[j]; j++, r++);
				}
				if(!b[i]) {
					L=R=i;
					for(int j=i; d[j]; j--, L--);
					for(int j=i; d[j]; j++, R++);
				}
			}
			if(r>L+1&&l<=L||R>l+1&&l>=L||l==L&&r==R) {
				printf("%d\n", n);
			} else {
				printf("%d\n", n-1);
			}
		}
	}
	
	return 0;
} 
