#include <bits/stdc++.h>
using namespace std;
long long binpowmod(long long a, long long b, long long mod) {
  if (b == 0) {
    return 1 % mod;
  }
  if (b == 1) {
    return a % mod;
  }
  if (b % 2 == 0) {
    return ((binpowmod(a, b / 2, mod) % mod) *
            (binpowmod(a, b / 2, mod) % mod)) %
           mod;
  }
  return ((a % mod) * (binpowmod(a, b - 1, mod) % mod)) % mod;
}
long long binpow(long long a, long long b) {
  if (b == 0) {
    return 1;
  }
  if (b == 1) {
    return a;
  }
  if (b % 2 == 0) {
    return min((long long)1e9, binpow(a, b / 2) * binpow(a, b / 2));
  }
  return min((long long)1e9, a * binpow(a, b - 1));
}
bool palindrome(string s) {
  for (int i = 0; i < (s.length()) / 2; i++) {
    if (s[i] != s[s.length() - 1 - i]) return false;
  }
  return true;
}
void solve() {
  int n, p;
  cin >> n >> p;
  string s;
  cin >> s;
  if (p == 1) {
    if (n > 1 || s[0] - 'a' == p - 1) {
      cout << "NO\n";
    } else {
      cout << (char)(s[0] + 1) << "\n";
    }
    return;
  }
  if (p == 2) {
    if (n > 2)
      cout << "NO\n";
    else if (n == 1) {
      if (s[0] - 'a' == p - 1)
        cout << "NO\n";
      else
        cout << (char)(s[0] + 1) << "\n";
    } else {
      char c1 = s[0];
      char c2 = s[1];
      if (c2 < p + 'a' - 1 && c2 + 1 != c1)
        cout << c1 << (char)(c2 + 1) << "\n";
      else if (c1 < p + 'a' - 1)
        cout << (char)(c1 + 1) << 'a' << "\n";
      else
        cout << "NO\n";
    }
    return;
  }
  for (int i = n - 1; i >= 0; i--) {
    bool go = true;
    for (int k = s[i] - 'a' + 1; k < p; k++) {
      if (i == 0) {
        s[i] = k + 'a';
        go = false;
        break;
      }
      if (i == 1) {
        if (k + 'a' != s[i - 1]) {
          go = false;
          s[i] = k + 'a';
          break;
        }
      }
      if (k + 'a' != s[i - 1] && k + 'a' != s[i - 2]) {
        go = false;
        s[i] = k + 'a';
        break;
      }
    }
    if (go == false) {
      for (int j = i + 1; j < n; j++) {
        for (int k = 0; k < p; k++) {
          if (j == 1) {
            if ((k + 'a') != s[j - 1]) {
              s[j] = k + 'a';
              break;
            }
          }
          if (k + 'a' != s[j - 1] && k + 'a' != s[j - 2]) {
            s[j] = k + 'a';
            break;
          }
        }
      }
      cout << s << "\n";
      break;
    }
    if (i == 0 && go) {
      cout << "NO\n";
    }
  }
}
int main() {
  {
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
  }
  long long t = 1;
  while (t--) {
    solve();
  }
  return 0;
}
