#include<bits/stdc++.h>
using namespace std;
int dp[1000005][3][2];
int inf=1e9;
int main(){
ios_base::sync_with_stdio(false);
cin.tie(0);
int n;cin>>n;
string a,b;cin>>a>>b;
for(int i=0;i<=n;i++)for(int j=0;j<3;j++)for(int k=0;k<2;k++)dp[i][j][k]=inf;
dp[0][2][0]=0;
for(int i=1;i<=n;i++){
for(int j=0;j<3;j++)for(int k=0;k<3;k++)for(int l=0;l<2;l++)for(int m=0;m<2;m++){
int cur=a[i];
cur=a[i-1]-'0';
if(k!=2)cur=k;
if(m)cur^=1;
if(cur!=b[i-1]-'0')continue;
int cost=(j!=k&&k!=2)+(m>l);
dp[i][k][m]=min(dp[i][k][m],dp[i-1][j][l]+cost);
//if(dp[i-1][j][l]+cost<inf)cerr<<"from"<<i-1<<","<<j<<" "<<l<<" to: "<<k<<" "<<m<<":"<<dp[i-1][j][l]+cost<<"\n";
}
}
int ans=inf;
for(int j=0;j<3;j++)for(int k=0;k<2;k++)ans=min(ans,dp[n][j][k]);
cout<<ans;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |