#include <bits/stdc++.h>
using namespace std;
const int MAXN = 10000 + 100;
const int inf = 0x3fffffff;
int n, p;
char str[MAXN];
int main() {
  while (~scanf("%d%d", &n, &p)) {
    scanf("%s", str);
    int len = strlen(str);
    int flag = 0;
    int pos = len - 1, ans;
    for (int i = len - 1; i >= 0; i--) {
      int x = str[i] - 'a' + 1;
      if (i >= 2) {
        int l = str[i - 2] - 'a' + 1;
        int r = str[i - 1] - 'a' + 1;
        for (int k = x + 1; k <= p; k++)
          if (k != l && k != r) {
            flag = 1;
            ans = k - 1;
            break;
          }
        if (flag) break;
        pos = i - 1;
      } else if (i == 1) {
        int l = str[i - 1] - 'a' + 1;
        for (int k = x + 1; k <= p; k++)
          if (k != l) {
            flag = 1;
            ans = k - 1;
            break;
          }
        if (flag) break;
        pos = i - 1;
      } else {
        if (x != p) {
          flag = 1;
          ans = x;
          break;
        }
        pos = i - 1;
      }
    }
    if (pos == -1) {
      printf("NO\n");
      continue;
    }
    str[pos] = ans + 'a';
    pos++;
    for (int i = pos; i < len; i++) {
      if (i == 1) {
        int l = str[i - 1] - 'a';
        for (int k = 0; k < p; k++)
          if (k != l) {
            str[i] = k + 'a';
            break;
          }
      } else {
        int l = str[i - 2] - 'a';
        int r = str[i - 1] - 'a';
        for (int k = 0; k < p; k++)
          if (k != l && k != r) {
            str[i] = k + 'a';
            break;
          }
      }
    }
    printf("%s\n", str);
  }
  return 0;
}
