#include <bits/stdc++.h>
using namespace std;
int k;
string s;
set<char> st;
int main() {
  cin >> k >> s;
  for (int i = 0; i < k; i++) st.insert('a' + i);
  for (int i = 0; i < s.size(); i++)
    if (st.find(s[i]) != st.end()) st.erase(s[i]);
  int Have = 0;
  for (int i = 0; i < (s.size() + 1) / 2; i++) {
    if (s[i] == '?' && s[s.size() - i - 1] == '?') Have++;
  }
  bool check = true;
  for (int i = 0; i < (s.size() + 1) / 2; i++) {
    if (s[i] == '?' && s[s.size() - i - 1] == '?') {
      if (Have - st.size() > 0)
        s[i] = 'a', s[s.size() - i - 1] = 'a';
      else
        s[i] = *st.begin(), s[s.size() - i - 1] = *st.begin(),
        st.erase(st.begin());
      Have--;
    } else if (s[i] != '?' && s[s.size() - i - 1] != '?') {
      if (s[i] != s[s.size() - i - 1]) check = false;
    } else {
      if (s[i] == '?')
        s[i] = s[s.size() - i - 1];
      else
        s[s.size() - i - 1] = s[i];
    }
  }
  if (st.size() || !check)
    cout << "IMPOSSIBLE";
  else
    cout << s;
  return 0;
}
