#include <bits/stdc++.h>
using namespace std;
void IOS() {
  ios::sync_with_stdio(false);
  cout.precision(10);
  cout << fixed;
}
const long long MOD = 1e9 + 7;
const long long mx = 1e5 + 5;
long long i, j, k;
long long gcd(long long x, long long y) {
  if (y == 0) return x;
  return gcd(y, x % y);
}
long long lcm(long long x, long long y) { return (x * y) / gcd(x, y); }
int32_t main() {
  IOS();
  long long n, p;
  string s;
  cin >> n >> p >> s;
  for (i = n - 1; i >= 0; i--) {
    long long q = 1, w = 0;
    for (long long j = s[i] - 95; j <= p; j++) {
      char z = (char)(j + 96);
      if (i - 1 >= 0 && z == s[i - 1]) q = 0;
      if (i - 2 >= 0 && z == s[i - 2]) q = 0;
      if (q) {
        s[i] = z;
        w = 1;
        break;
      }
      q = 1;
    }
    if (w) break;
  }
  if (i == -1)
    cout << "NO"
         << "\n";
  else {
    for (long long j = i + 1; j < n; j++) {
      if (j <= 1 && s[0] != 'a')
        s[j] = 'a';
      else if (j <= 1)
        s[j] = 'b';
      else if ((j > 0 && s[j - 1] != 'a') && (j > 1 && s[j - 2] != 'a'))
        s[j] = 'a';
      else if ((j > 0 && s[j - 1] != 'b') && (j > 1 && s[j - 2] != 'b'))
        s[j] = 'b';
      else if ((j > 0 && s[j - 1] != 'c') && (j > 1 && s[j - 2] != 'c'))
        s[j] = 'c';
    }
    cout << s << "\n";
  }
  return 0;
}
