#include #define N 100005 using namespace std; int T,n; string a,b,af,bf; int af0[N],bf0[N]; struct pint{ int x,y; }; int main(){ freopen("edit.in","r",stdin); freopen("edit.out","w",stdout); cin >> T; while(T--){ cin >> n; cin >> a >> b >> af >> bf; a.append("$$$"); b.append("$$$"); af.append("$$$"); bf.append("$$$"); //cout << a << ' ' << b << ' ' << af << ' ' << bf << endl; vector na; vector nb; int i=0; while(1){ while(af[i]=='0'&&i0) {ans++;na[af0[i]].x--;} else na[af0[i]].y--; } if(b[i]=='1'){ if(na[af0[i]].y>0) {ans++;na[af0[i]].y--;} else na[af0[i]].x--; } } if(af0[i]==-1&&bf0[i]!=-1){ if(a[i]=='0'){ if(nb[bf0[i]].x>0) {ans++;nb[bf0[i]].x--;} else nb[bf0[i]].y--; } if(a[i]=='1'){ if(nb[bf0[i]].y>0) {ans++;nb[bf0[i]].y--;} else nb[bf0[i]].x--; } } if(af0[i]!=-1&&bf0[i]!=-1){ if(na[af0[i]].x>0&&nb[bf0[i]].x>0){ ans++;na[af0[i]].x--;nb[bf0[i]].x--; } else if(na[af0[i]].y>0&&nb[bf0[i]].y>0){ ans++;na[af0[i]].y--;nb[bf0[i]].y--; } else{ if(na[af0[i]].x>0) na[af0[i]].x--; if(na[af0[i]].y>0) na[af0[i]].y--; if(nb[bf0[i]].x>0) nb[bf0[i]].x--; if(nb[bf0[i]].y>0) nb[bf0[i]].y--; } } } cout << ans << endl; } fclose(stdin); fclose(stdout); return 0; }