#include <bits/stdc++.h>
using namespace std;
char s[1000007], ans[1000007];
int n, j, m, f[1000007], g[1000007], p[1000007];
bool check(int y, int L) {
  int x = y - L;
  if (x < 0) return 1;
  return (g[y] - g[x] * p[L]) * p[x + 1] != f[y] - f[x];
}
void dfs(int t, bool beyond) {
  if (t > n) {
    puts(ans + 1);
    exit(0);
  }
  for (char i = beyond ? 'a' : s[t]; i <= 'z'; i++) {
    ans[t] = i;
    f[t] = f[t - 1] + i * p[t];
    g[t] = g[t - 1] * 1000007 + i;
    if (check(t, m) && check(t, m + 1)) dfs(t + 1, beyond || i > s[t]);
  }
}
int main() {
  scanf("%d%s", &m, s + 1);
  j = n = strlen(s + 1);
  while (j && s[j] == 'z') s[j--] = 'a';
  if (!j) {
    puts("Impossible");
    return 0;
  }
  s[j]++;
  p[0] = 1;
  for (j = 1; j <= n; j++) p[j] = p[j - 1] * 1000007;
  dfs(1, 0);
  puts("Impossible");
  return 0;
}
