func_code_string: #include <bits/stdc++.h>   using namespace std;   long long MOD_EXPO(long long b, long long p, long long m) {     if (p == 0) return 1;     long long ret = MOD_EXPO(b, p / 2, m) % m;     ret = (ret * ret) % m;     return ((p & 1) ? (ret * b) % m : ret % m);   }   long long POWER(long long N, long long K) {     long long i, ans = 1;     for (i = 1; i <= K; i++) ans *= N;     return ans;   }   int SET(int N, int pos) { return (N | (1 << pos)); }   int RESET(int N, int pos) { return (N & !(1 << pos)); }   bool CHECK(int N, int pos) { return (N & (1 << pos)); }   int dx4[] = {1, -1, 0, 0};   int dy4[] = {0, 0, 1, -1};   int dx6[] = {0, 0, 1, -1, 0, 0};   int dy6[] = {1, -1, 0, 0, 0, 0};   int dz6[] = {0, 0, 0, 0, 1, -1};   int dx8[] = {1, -1, 0, 0, -1, 1, -1, 1};   int dy8[] = {0, 0, 1, -1, 1, 1, -1, -1};   int dkx8[] = {-1, 1, -1, 1, -2, -2, 2, 2};   int dky8[] = {2, 2, -2, -2, 1, -1, 1, -1};   int tc = 1;   const double eps = 1e-9;   const double pi = acos(-1.0);   const long long int mx = 1e3;   const long long int mod = 1e9 + 7;   int dp[5][mx + 5];   int n, arr[mx + 5];   string str;   int rec(int i, int prev) {     if (i > n) return 0;     int &ret = dp[prev][i];     if (ret != -1) return ret;     ret = INT_MAX;     if (prev != 0) ret = min(ret, rec(i + 1, 0) + (arr[i] != 0));     if (prev != 1) ret = min(ret, rec(i + 1, 1) + (arr[i] != 1));     return ret;   }   int main() {     int i;     while (cin >> n >> str) {       for (i = 1; i <= n; i++) arr[i] = (str[i - 1] -  0 );       memset(dp, -1, sizeof(dp));       cout << rec(1, 2) <<   n ;     }     return 0;   }   