#include <bits/stdc++.h>
using namespace std;
int main() {
  string s;
  int i, j, n, k, imp, c, h;
  int f[200];
  {
    imp = 0;
    memset(f, 0, sizeof(f));
    cin >> k;
    cin >> s;
    n = ((int)s.size());
    h = n % 2 + n / 2;
    for (i = 0; i < n; i++)
      if (isalpha(s[i])) f[s[i] - 'a']++;
    for (i = h - 1; i > -1; i--) {
      if (s[i] != s[n - i - 1]) {
        if (isalpha(s[i]) && isalpha(s[n - i - 1])) {
          imp = 1;
          break;
        } else if (isalpha(s[i]))
          s[n - i - 1] = s[i];
        else
          s[i] = s[n - i - 1];
      } else if (s[i] == '?') {
        c = 0;
        for (j = k - 1; j > -1; j--)
          if (f[j] == 0) {
            c = j;
            f[j]++;
            break;
          }
        s[i] = s[n - i - 1] = 'a' + c;
      }
    }
    if (imp == 0) {
      for (i = 0; i < k; i++)
        if (!f[i]) {
          imp = 1;
          break;
        }
    }
    if (!imp)
      cout << s << endl;
    else
      cout << "IMPOSSIBLE" << endl;
  }
  return 0;
}
