#include <bits/stdc++.h>
#pragma comment(linker, "/STACK:64000000")
using namespace std;
void __never(int a) { printf("\nOPS %d", a); }
int n;
string str;
bool used[256];
void sol() {
  for (int a = (0); a <= ((int)((str).size()) - 1); a++) used[str[a]] = true;
  int i = 0, j = (int)((str).size()) - 1;
  while (i <= j) {
    i++;
    j--;
  }
  i--;
  j++;
  while (i >= 0) {
    if (str[i] != '?' && str[j] != '?') {
      if (str[i] != str[j]) {
        printf("IMPOSSIBLE");
        return;
      }
    } else if (str[i] == '?' && str[j] == '?') {
      for (int a = ('a' + n - 1); a >= ('a'); a--)
        if (!used[a]) {
          str[i] = a;
          str[j] = a;
          used[a] = true;
          break;
        }
      if (str[i] == '?') {
        str[i] = 'a';
        str[j] = 'a';
      }
    } else if (str[i] == '?')
      str[i] = str[j];
    else if (str[j] == '?')
      str[j] = str[i];
    else {
      if (!(false)) {
        __never(64);
        cout.flush();
        cerr.flush();
        abort();
      }
    };
    i--;
    j++;
  }
  for (int a = ('a'); a <= ('a' + n - 1); a++)
    if (!used[a]) {
      printf("IMPOSSIBLE");
      return;
    }
  cout << str;
}
int main() {
  cin >> n >> str;
  sol();
  return 0;
}
