#include using namespace std; int read() { int f=1,x=0;char c=getchar(); while(!isdigit(c)) { if(c=='-') f=-1; c=getchar(); } while(isdigit(c)) { x=x*10+(c-'0'); c=getchar(); } return x*f; } int T,n,f1[100010],f2[100010]; int k1[100010][2],k2[100010][2]; struct nx { int l,r; }h1[100010],h2[100010]; string s1,s2,t1,t2; int ans; void inti() { n=read(); cin>>s1>>s2>>t1>>t2; s1="*"+s1,s2="*"+s2; t1="*"+t1,t2="*"+t2; for(int i=1;i<=n;i++) { f1[i]=t1[i]-'0'; f2[i]=t2[i]-'0'; if(t1[i-1]=='0'&&!t1[i+1]) f1[i]=0; if(t2[i-1]=='0'&&!t2[i+1]) f2[i]=0; } if(t1[n-1]=='0') f1[n]=0; if(t2[n-1]=='0') f2[n]=0; if(t1[2]=='0') f1[1]=0; if(t2[2]=='0') f2[1]=0; for(int i=1;i<=n;i++) { k1[i][0]=k1[i-1][0],k1[i][1]=k1[i-1][1]; k2[i][0]=k2[i-1][0],k2[i][1]=k2[i-1][1]; if(f1[i]) k1[i][s1[i]-'0']+=1; if(f2[i]) k2[i][s2[i]-'0']+=1; } int x1l=0,x2l=0,x1r=0,x2r=0; while(x1r0) ans++,k2[h2[i].l-1][s1[i]-'0']+=1; else if(f1[i]&&!f2[i]&&k1[h1[i].r][s2[i]-'0']-k1[h1[i].l-1][s2[i]-'0']>0) ans++,k1[h1[i].l-1][s2[i]-'0']+=1; else if(f1[i]&&f2[i]) { if(k2[h2[i].r][0]-k2[h2[i].l-1][0]>0&&k1[h1[i].r][0]-k1[h1[i].l-1][0]>0) ans++,k2[h2[i].l-1][0]+=1,k1[h1[i].l-1][0]+=1; else if(k2[h2[i].r][1]-k2[h2[i].l-1][1]>0&&k1[h1[i].r][1]-k1[h1[i].l-1][1]>0) ans++,k2[h2[i].l-1][1]+=1,k1[h1[i].l-1][1]+=1; } } printf("%d\n",ans); ans=0; for(int i=1;i<=n;i++) f1[i]=f2[i]=h1[i].l=h1[i].r=h2[i].l=h2[i].r=0; } return 0; }