#include <bits/stdc++.h>
char a[110];
int b[150];
int main() {
  int i, j, k, n, L;
  scanf("%d%s", &n, a);
  L = strlen(a);
  for (i = 0, j = L - 1; i < L; i++, j--) {
    if (a[i] == '?' && a[j] != '?') a[i] = a[j];
    if (a[i] != '?' && a[j] == '?') a[j] = a[i];
  }
  for (i = 0; i < L; i++) b[a[i]]++;
  if (L & 1) {
    if (a[L / 2] == '?') {
      for (i = 'a' + n - 1; i >= 'a'; i--) {
        if (!b[i]) {
          a[L / 2] = i;
          b[i] = 1;
          break;
        }
      }
    }
    for (i = L / 2 - 1, j = L / 2 + 1; i >= 0; i--, j++) {
      for (k = 'a' + n - 1; k >= 'a'; k--) {
        if (a[i] == '?' && a[j] == '?' && !b[k]) {
          a[i] = k;
          a[j] = k;
          b[k] = 1;
          break;
        }
      }
    }
  } else {
    for (i = L / 2 - 1, j = L / 2; i >= 0; i--, j++) {
      for (k = 'a' + n - 1; k >= 'a'; k--) {
        if (a[i] == '?' && a[j] == '?' && !b[k]) {
          a[i] = k;
          a[j] = k;
          b[k] = 1;
          break;
        }
      }
    }
  }
  for (i = 0, j = L - 1; i < L; i++, j--) {
    if (a[i] == '?' && a[j] == '?') a[i] = a[j] = 'a';
  }
  for (i = 0, j = L - 1; i < L; i++, j--) {
    if (a[i] != a[j]) {
      puts("IMPOSSIBLE");
      return 0;
    }
  }
  for (i = 0; i < L; i++) {
    if (a[i] >= ('a' + n)) {
      puts("IMPOSSIBLE");
      return 0;
    }
  }
  for (i = 'a'; i < 'a' + n; i++)
    if (!b[i]) {
      puts("IMPOSSIBLE");
      return 0;
    }
  puts(a);
  return 0;
}
