#include <bits/stdc++.h>
using namespace std;
char s[1000];
int used[100];
int main() {
  int i, j, k, l, b1;
  vector<int> a;
  scanf("%d", &k);
  scanf("%s", s);
  l = strlen(s);
  b1 = 1;
  a.clear();
  memset(used, 0, sizeof(used));
  for (i = 0; i < l / 2; i++) {
    if ((s[i] == '?') || (s[l - 1 - i] == '?')) {
      if ((s[i] == '?') && (s[l - 1 - i] == '?'))
        a.push_back(i);
      else if (s[i] == '?')
        s[i] = s[l - 1 - i];
      else
        s[l - 1 - i] = s[i];
    } else if (s[i] != s[l - 1 - i])
      b1 = 0;
    if (s[i] != '?') used[s[i] - 'a'] = 1;
  }
  if ((l % 2 == 1) && (s[l / 2] == '?')) a.push_back(l / 2);
  if ((l % 2 == 1) && (s[l / 2] != '?')) used[s[l / 2] - 'a'] = 1;
  j = a.size() - 1;
  for (i = k - 1; i >= 0; i--)
    if (used[i] == 0) {
      if (j < 0) {
        b1 = 0;
        break;
      }
      s[a[j]] = 'a' + i;
      s[l - 1 - a[j]] = 'a' + i;
      j--;
    }
  for (i = j; i >= 0; i--) {
    s[a[i]] = 'a';
    s[l - 1 - a[i]] = 'a';
  }
  if (b1 == 0)
    printf("IMPOSSIBLE\n");
  else
    printf("%s\n", s);
  return 0;
}
