#include <bits/stdc++.h>
int main() {
  int i, j, k, l, flag, count, flagp, i1, c;
  char s[10000];
  while (scanf("%d", &k) == 1) {
    scanf("%s", s);
    flag = 0;
    int flagc[30] = {0};
    l = strlen(s);
    if (l < k) {
      printf("IMPOSSIBLE\n");
      continue;
    }
    for (i = 0, j = l - 1; i <= j; i++, j--) {
      if (s[i] != s[j] && s[i] != '?' && s[j] != '?') {
        flag = 1;
        break;
      }
      if (s[i] == '?' && s[j] != '?') {
        s[i] = s[j];
        flagc[s[j] - 'a'] = 1;
      } else if (s[j] == '?' && s[i] != '?') {
        s[j] = s[i];
        flagc[s[i] - 'a'] = 1;
      } else if (s[i] == s[j] && s[i] != '?') {
        flagc[s[i] - 'a'] = 1;
      }
    }
    if (l % 2 && l > 1) {
      j = l / 2;
      flagp = 0;
      if (s[j] == '?') {
        for (i = k - 1; i >= 0; i--) {
          if (flagc[i] == 0) {
            s[j] = i + 'a';
            s[l - 1 - j] = i + 'a';
            flagp = 1;
            flagc[i] = 1;
            break;
          }
        }
        if (flagp == 0) {
          s[j] = 'a';
          flagc[0] = 1;
        }
      }
      flagc[s[j] - 'a'] = 1;
    }
    j = l / 2;
    for (i = j; i >= 0; i--) {
      if (s[i] == '?') {
        flagp = 0;
        for (i1 = k - 1; i1 >= 0; i1--) {
          if (flagc[i1] == 0) {
            s[i] = i1 + 'a';
            s[l - 1 - i] = i1 + 'a';
            flagp = 1;
            flagc[i1] = 1;
            break;
          }
        }
        if (flagp == 0) {
          s[i] = 'a';
          s[l - i - 1] = 'a';
          flagc[0] = 1;
        }
      }
    }
    for (i = 0; i < k; i++) {
      if (flagc[i] != 1) {
        flag = 1;
      }
    }
    for (i = k; i <= 25; i++) {
      if (flagc[i] == 1) {
        flag = 1;
      }
    }
    if (flag == 1)
      printf("IMPOSSIBLE\n");
    else
      puts(s);
  }
  return 0;
}
