#include using namespace std; const int N=1e5+5; int n; string s1,s2; int t1[N],t2[N]; bool b1[N],b2[N]; int cnt1[2][N],idx1=2; int cnt2[2][N],idx2=2; int main(){ freopen("edit.in","r",stdin); freopen("edit.out","w",stdout); ios::sync_with_stdio(false); cin.tie(0),cout.tie(0); int T; cin >> T; while(T--){ cin >> n; cin >> s1 >> s2; s1=' '+s1; s2=' '+s2; string s; cin >> s; s="0"+s+"0"; for(int i=1;i<=n;i++){ if(s[i]=='1'&&(s[i-1]=='1'||s[i+1]=='1'))b1[i]=1; else b1[i]=0; } cin >> s; s="0"+s+"0"; for(int i=1;i<=n;i++){ if(s[i]=='1'&&(s[i-1]=='1'||s[i+1]=='1'))b2[i]=1; else b2[i]=0; } for(int i=1;i<=n;i++){ if(b1[i]==0)t1[i]=s1[i]-'0'; else if(b1[i-1]){ t1[i]=t1[i-1]; cnt1[s1[i]-'0'][idx1]++; } else{ t1[i]=++idx1; cnt1[0][idx1]=0; cnt1[0][idx1]=0; cnt1[s1[i]-'0'][idx1]++; } if(b2[i]==0)t2[i]=s2[i]-'0'; else if(b2[i-1]){ t2[i]=t2[i-1]; cnt2[s2[i]-'0'][idx2]++; } else{ t2[i]=++idx2; cnt2[0][idx2]=0; cnt2[0][idx2]=0; cnt2[s2[i]-'0'][idx2]++; } } int ans=0; for(int i=1;i<=n;i++){ if(t1[i]<2&&t2[i]<2){ if(t1[i]==t2[i])ans++; } else if(t1[i]<2){ if(cnt2[t1[i]][t2[i]]){ ans++; cnt2[t1[i]][t2[i]]--; t2[i]=t1[i]; } else{ cnt2[1-t1[i]][t2[i]]--; t2[i]=1-t1[i]; } } else if(t2[i]<2){ if(cnt1[t2[i]][t1[i]]){ ans++; cnt1[t2[i]][t1[i]]--; t1[i]=t2[i]; } else{ cnt1[1-t2[i]][t1[i]]--; t1[i]=1-t2[i]; } } else{ } } for(int i=1;i<=n;i++){ if(t2[i]>2&&t1[i]>2){ if(cnt1[0][t1[i]]&&cnt2[0][t2[i]]){ ans++; cnt1[0][t1[i]]--,cnt2[0][t2[i]]--; t1[i]=0,t2[i]=0; } else if(cnt1[1][t1[i]]&&cnt2[1][t2[i]]){ ans++; cnt1[1][t1[i]]--,cnt2[1][t2[i]]--; t1[i]=1,t2[i]=1; } else{ if(cnt1[0][t1[i]]){ cnt1[0][t1[i]]--; cnt2[1][t2[i]]--; t1[i]=0,t2[i]=1; } else{ cnt1[1][t1[i]]--; cnt2[0][t2[i]]--; t1[i]=1,t2[i]=0; } } } } // for(int i=1;i<=n;i++){ // cout << t1[i] <<' '; // } // cout <