#include <bits/stdc++.h>
using namespace std;
string s;
int k;
bool mark[30];
int main() {
  cin >> k >> s;
  string a = s, b = s;
  for (int i = 0; i < s.size(); i++)
    if (s[i] != '?') mark[s[i] - 'a'] = true;
  for (int i = 0; 2 * i < s.size(); i++) {
    if (a[i] != '?')
      a[a.size() - 1 - i] = a[i];
    else
      a[i] = a[a.size() - 1 - i];
    if (b[b.size() - 1 - i] != '?')
      b[i] = b[b.size() - 1 - i];
    else
      b[b.size() - 1 - i] = b[i];
  }
  if (a != b) {
    cout << "IMPOSSIBLE" << endl;
    return 0;
  }
  s = a;
  int i = s.size() / 2 + (s.size() & 1) - 1, j = k - 1;
  while (i != -1) {
    if (s[i] != '?') {
      i--;
      continue;
    }
    while (j != 0 && mark[j]) j--;
    s[i] = s[s.size() - 1 - i] = 'a' + j;
    mark[j] = true;
  }
  for (int i = 0; i < k; i++)
    if (!mark[i]) {
      cout << "IMPOSSIBLE" << endl;
      return 0;
    }
  cout << s << endl;
}
