#include using namespace std; int t,n,a[1000010],b[1000010],f[1000010],g[1000010]; struct node { int l,r; }r1[1000010],r2[100010]; int tot1 = 0,tot2 = 0; int bel1[1000010],bel2[1000010],sum1[1000010][2],sum2[1000010][2]; int main() { freopen("edit.in","r",stdin); freopen("edit.out","w",stdout); scanf("%d",&t); while(t--) { scanf("%d",&n); char c; for(int i = 1;i <= n;i++) { cin >> c; a[i] = c - '0'; } for(int i = 1;i <= n;i++) { cin >> c; b[i] = c - '0'; } int l = 1; for(int i = 1;i <= n;i++) { cin >> c; f[i] = c - '0'; if(c == '0') { //cout << i << endl; if(i > 1) { r1[++tot1].l = l,r1[tot1].r = i - 1; for(int j = l;j <= i - 1;j++) bel1[j] = tot1; } r1[++tot1].l = i,r1[tot1].r = i; bel1[i] = tot1; l = i + 1; } } if(!bel1[n]) { r1[++tot1].l = l,r1[tot1].r = n; for(int j = l;j <= n;j++) bel1[j] = tot1; } l = 1; for(int i = 1;i <= n;i++) { cin >> c; g[i] = c - '0'; if(c == '0') { //cout << i << endl; if(i > 1) { r2[++tot2].l = l,r2[tot2].r = i - 1; for(int j = l;j <= i - 1;j++) bel2[j] = tot2; } r2[++tot2].l = i,r2[tot2].r = i; bel2[i] = tot2; l = i + 1; } } if(!bel2[n]) { r2[++tot2].l = l,r2[tot2].r = n; for(int j = l;j <= n;j++) bel2[j] = tot2; } int x = 1,y = 1; for(int i = 1;i <= n;i++) { if(a[i] == 1) sum1[bel1[i]][1]++; else sum1[bel1[i]][0]++; if(b[i] == 1) sum2[bel2[i]][1]++; else sum2[bel2[i]][0]++; } //cout < r1[x].r) x++; if(r2[y].l > r2[y].r) y++; if(sum1[x][0] == sum1[x][1] && sum1[x][1] == 0) x++; if(sum2[y][0] == sum2[y][1] && sum2[y][1] == 0) y++; //cout << x <<" " << y << " " << r1[x].l << " " << r1[x].r << " " << r2[y].l << " " < sz2) { if(sum2[y][0]) { int sub = min(sum2[y][0],sum1[x][0]); if(sum1[x][0] < sum2[y][0]) sum1[x][1] -= (sum2[y][0] - sum1[x][0]); sum2[y][0] -= sub; sum1[x][0] -= sub; ans += sub; } if(sum2[y][1]) { int sub = min(sum2[y][1],sum1[x][1]); if(sum1[x][1] < sum2[y][1]) sum1[x][0] -= (sum2[y][1] - sum1[x][1]); sum2[y][1] -= sub; sum1[x][1] -= sub; ans += sub; } r1[x].l = r2[y].r + 1; if(r1[x].l > r1[x].r) x++; y++; } else { if(sum1[x][0]) { int sub = min(sum1[x][0],sum2[y][0]); if(sum2[y][0] < sum1[x][0]) sum2[y][1] -= (sum1[x][0] - sum2[y][0]); sum1[x][0] -= sub; sum2[y][0] -= sub; ans += sub; } if(sum1[x][1]) { int sub = min(sum1[x][1],sum2[y][1]); if(sum2[y][1] < sum1[x][1]) sum2[y][0] -= (sum1[x][1] - sum2[y][1]); sum1[x][1] -= sub; sum2[y][1] -= sub; ans += sub; } r2[y].l = r1[x].r + 1; if(r2[y].l > r2[y].r) y++; x++; } } //cout <