func_code_string: #include <bits/stdc++.h>   using namespace std;   const int N = 1e5 + 10;   int n, m, a[N], p, q[5], nq[5];   long long f[N][10];   char s[N];   int main() {     scanf( %d%d%s , &n, &m, s + 1);     for (int i = 1; i <= n; i++) a[i] = s[i] -  a  + 1;     for (int i = 1; i <= m; i++) {       p = 1;       if (i == a[1]) p |= 2;       if (i == a[1] || i == a[2]) p |= 4;       ++f[1][p];     }     for (int i = 1; i <= n - 1; i++) {       for (int j = 0; j <= 7; j++) {         if (f[i][j]) {           q[0] = i - 2 + (j & 1);           q[1] = i - 1 + (j >> 1 & 1);           q[2] = i - 1 + (j >> 2 & 1);           for (int k = 1; k <= m; k++) {             int p = 0;             nq[0] = (k == a[i] ? q[0] + 1 : q[1]);             nq[1] = (k == a[i + 1] ? q[1] + 1 : max(nq[0], q[2]));             nq[2] = (k == a[i + 2] ? q[2] + 1 : nq[1]);             if (nq[0] < i - 1 || nq[1] < i || nq[2] < i) continue;             p = nq[0] - (i - 1);             p |= (nq[1] - i) << 1;             p |= (nq[2] - i) << 2;             f[i + 1][p] += f[i][j];           }         }       }     }     printf( %lld n , f[n][0] + f[n][1] + f[n][4] + f[n][5]);     return 0;   }   