#include <bits/stdc++.h>
using namespace std;
int getInt() {
  int x;
  scanf("%d", &x);
  return x;
}
long long getLongLong() {
  long long x;
  scanf("%I64d", &x);
  return x;
}
double getDouble() {
  double x;
  scanf("%lf", &x);
  return x;
}
char getChar() {
  char x;
  scanf("%c", &x);
  return x;
}
template <typename t>
t abs(t a) {
  if (a >= 0) return a;
  return -a;
}
int n, p;
char s[2000];
bool make(int idx) {
  if (idx < 0) return 0;
again_:
  if (s[idx] >= ('a' + p)) {
    s[idx] = 'a';
    if (idx == 0) return 0;
    s[idx - 1]++;
    if (!make(idx - 1)) return 0;
  }
  if ((idx > 0 && s[idx] == s[idx - 1]) || (idx > 1 && s[idx] == s[idx - 2])) {
    s[idx]++;
    goto again_;
  }
  return 1;
}
int main() {
  n = getInt();
  p = getInt();
  scanf("%s", s);
  int idx = strlen(s) - 1;
  s[idx]++;
  if (make(idx))
    cout << s << endl;
  else
    cout << "NO" << endl;
  return 0;
}
