#include <bits/stdc++.h>
using namespace std;
int n;
string s;
bool vis[26];
int main() {
  cin >> n;
  cin >> s;
  for (int i = 0; i < s.size(); i++) {
    if (s[i] != '?') {
      vis[s[i] - 'a'] = 1;
    }
  }
  for (int i = s.size() / 2; i >= 0; i--) {
    if (s[i] == '?' and s[s.size() - 1 - i] != '?') {
      s[i] = s[s.size() - i - 1];
      vis[s[s.size() - i - 1] - 'a'] = 1;
    } else {
      if (s[i] != '?' and s[s.size() - 1 - i] == '?') {
        s[s.size() - 1 - i] = s[i];
        vis[s[i] - 'a'] = 1;
      } else {
        if (s[i] != s[s.size() - 1 - i]) {
          cout << "IMPOSSIBLE";
          return 0;
        } else {
          if (s[i] == '?' and s[s.size() - i - 1] == '?') {
            bool need = 0;
            char mark = 'a';
            for (int j = n - 1; j >= 0; j--) {
              if (!vis[j]) {
                mark = j + 'a';
                vis[j] = 1;
                need = 1;
                break;
              }
            }
            s[i] = s[s.size() - 1 - i] = mark;
          }
        }
      }
    }
  }
  for (int i = 0; i < n; i++) {
    if (!vis[i]) {
      cout << "IMPOSSIBLE";
      return 0;
    }
  }
  cout << s;
  return 0;
}
