#include <bits/stdc++.h>
using namespace std;
void SR(int &x) { scanf("%d", &x); }
void SR(long long &x) { scanf("%lld", &x); }
void SR(double &x) { scanf("%lf", &x); }
void SR(char *s) { scanf("%s", s); }
void RI() {}
template <typename I, typename... T>
void RI(I &x, T &...tail) {
  SR(x);
  RI(tail...);
}
void SP(const int x) { printf("%d", x); }
void SP(const long long x) { printf("%lld", x); }
void SP(const double x) { printf("%.16lf", x); }
void SP(const char *s) { printf(s); }
void PS() { puts(""); }
template <typename I, typename... T>
void PS(I &x, T &...tail) {
  putchar(' ');
  SP(x);
  PS(tail...);
}
void PL() { puts(""); }
template <typename I, typename... T>
void PL(const I x, const T... tail) {
  SP(x);
  PS(tail...);
}
const int maxn = 1e5 + 5;
int n, m;
char s[maxn];
void read() {
  RI(n, m);
  SR(s + 1);
}
int dp[maxn];
void build() {
  dp[n] = 1;
  for (int i = n - 1; i >= 0; i--) {
    if (s[i] == s[i + 2])
      dp[i] = dp[i + 1] + 1;
    else
      dp[i] = 2;
  }
}
void sol() {
  long long ans = 0;
  for (int i = (1); i <= int(n); i++)
    if (s[i] != s[i + 1]) {
      ans += (m - 1) * n;
      ans -= dp[i] - 1;
    }
  PL(ans);
}
int main() {
  read();
  build();
  sol();
  return 0;
}
