You are given a string S of length n with each character being one of the first m lowercase English letters. 

Calculate how many different strings T of length n composed from the first m lowercase English letters exist such that the length of LCS (longest common subsequence) between S and T is n - 1.

Recall that LCS of two strings S and T is the longest string C such that C both in S and T as a subsequence.

Input

The first line contains two numbers n and m denoting the length of string S and number of first English lowercase characters forming the character set for strings (1 ≤ n ≤ 100 000, 2 ≤ m ≤ 26).

The second line contains string S.

Output

Print the only line containing the answer.

Examples

Input

3 3
aaa


Output

6


Input

3 3
aab


Output

11


Input

1 2
a


Output

1


Input

10 9
abacadefgh


Output

789

Note

For the first sample, the 6 possible strings T are: aab, aac, aba, aca, baa, caa. 

For the second sample, the 11 possible strings T are: aaa, aac, aba, abb, abc, aca, acb, baa, bab, caa, cab.

For the third sample, the only possible string T is b.
#include <bits/stdc++.h>
using namespace std;
const int inf = ~0U >> 1;
const long long INF = ~0ULL >> 1;
template <class T>
inline void read(T &n) {
  char c;
  int flag = 1;
  for (c = getchar(); !(c >= '0' && c <= '9' || c == '-'); c = getchar())
    ;
  if (c == '-')
    flag = -1, n = 0;
  else
    n = c - '0';
  for (c = getchar(); c >= '0' && c <= '9'; c = getchar()) n = n * 10 + c - '0';
  n *= flag;
}
long long ans, dp[120000][2][2][2][2];
int N, M;
char temp[120000];
int main() {
  scanf("%d%d", &N, &M);
  scanf("%s", temp + 1);
  dp[0][0][0][1][1] = 1;
  for (int i = (0); i < (N); ++i)
    for (int s1 = (0); s1 <= (1); ++s1)
      for (int s2 = (0); s2 <= (1); ++s2)
        for (int s3 = (0); s3 <= (1); ++s3)
          for (int s4 = (0); s4 <= (1); ++s4) {
            for (int c = ('a'); c <= ('a' + M - 1); ++c) {
              int _s1 = 0, _s2 = 0, _s3 = 0, _s4 = 0;
              _s1 |= temp[i] == c && s1;
              _s2 |= temp[i + 1] == c && s1;
              _s2 |= temp[i + 1] == c && s2;
              _s1 |= s3;
              _s3 |= temp[i + 1] == c && s3;
              _s4 |= temp[i + 2] == c && s3;
              _s2 |= s4;
              _s4 |= temp[i + 2] == c && s4;
              dp[i + 1][_s1][_s2][_s3][_s4] += dp[i][s1][s2][s3][s4];
            }
          }
  for (int s1 = (0); s1 <= (1); ++s1)
    for (int s2 = (0); s2 <= (1); ++s2)
      for (int s4 = (0); s4 <= (1); ++s4)
        if (s1 || s2 || s4) ans += dp[N][s1][s2][0][s4];
  printf("%lld\n", ans);
  return 0;
}
