#include <bits/stdc++.h>
using namespace std;
const int MAXN = 1000;
int n, m;
string s;
char maxSymb;
int get(int i) { return i >= 0 ? s[i] : '0'; }
bool push(int i) {
  if (s[i] == maxSymb) return false;
  if (s[i] + 1 != get(i - 1) && s[i] + 1 != get(i - 2)) {
    s[i]++;
    return true;
  }
  if (s[i] + 1 == maxSymb) return false;
  if (s[i] + 2 != get(i - 1) && s[i] + 2 != get(i - 2)) {
    s[i] += 2;
    return true;
  }
  if (s[i] + 2 == maxSymb) return false;
  s[i] += 3;
  return true;
}
void transform(int i) {
  if (get(i - 1) != 'a' && get(i - 2) != 'a')
    s[i] = 'a';
  else if (get(i - 1) != 'b' && get(i - 2) != 'b')
    s[i] = 'b';
  else
    s[i] = 'c';
}
int main() {
  cin >> n >> m >> s;
  maxSymb = 'a' + m - 1;
  if (m == 1) {
    cout << "NO" << endl;
    return 0;
  }
  if (m == 2) {
    if (s == "ab")
      cout << "ba" << endl;
    else if (s == "a")
      cout << "b" << endl;
    else
      cout << "NO" << endl;
    return 0;
  }
  int i = n - 1;
  for (; i >= 0 && !push(i); i--)
    ;
  if (i == -1) {
    cout << "NO" << endl;
    return 0;
  }
  for (i = i + 1; i < n; i++) transform(i);
  cout << s << endl;
  return 0;
}
