#include <bits/stdc++.h>
using namespace std;
int n, m, pre[400005], suf[400005], fpm[400005];
char s[400005], ans[400005];
bool check(int x, int y) {
  int z = x - y;
  if (z < 0) return true;
  return (suf[x] - suf[z] + 998244353) % 998244353 !=
         1LL * (pre[x] - 1LL * pre[z] * fpm[y] % 998244353 + 998244353) %
             998244353 * fpm[z] % 998244353;
}
void dfs(int x, bool flag) {
  if (x > n) {
    printf("%s\n", ans + 1);
    exit(0);
  }
  for (int i = flag ? 0 : s[x] - 'a'; i < 26; i++) {
    pre[x] = (1LL * pre[x - 1] * 37 % 998244353 + i) % 998244353;
    suf[x] = (suf[x - 1] + 1LL * fpm[x - 1] * i % 998244353) % 998244353;
    ans[x] = 'a' + i;
    if (check(x, m) && check(x, m + 1))
      dfs(x + 1, i > s[x] - 'a' ? true : flag);
  }
}
int main() {
  scanf("%d%s", &m, s + 1);
  n = strlen(s + 1);
  int lasti = n;
  while (lasti > 0 && s[lasti] == 'z') s[lasti--] = 'a';
  if (lasti == 0) {
    puts("Impossible");
    return 0;
  }
  s[lasti]++;
  fpm[0] = 1;
  for (int i = 1; i <= n; i++) fpm[i] = 1LL * fpm[i - 1] * 37 % 998244353;
  dfs(1, false);
  puts("Impossible");
  return 0;
}
