#include <bits/stdc++.h>
using namespace std;
int n, k, cntf, cnt;
bool a[30];
int main() {
  string second;
  cin >> k;
  cin >> second;
  n = second.length();
  for (int i = 0; i < n / 2; i++) {
    int j = n - i - 1;
    if (second[i] == second[j] || second[i] == '?' || second[j] == '?') {
      if (second[i] == second[j]) continue;
      if (second[i] == '?')
        second[i] = second[j];
      else if (second[j] == '?')
        second[j] = second[i];
    } else {
      cout << "IMPOSSIBLE\n";
      return 0;
    }
  }
  int to;
  if (n % 2)
    to = n / 2;
  else
    to = n / 2 - 1;
  for (int i = 0; i <= to; i++)
    if (second[i] != '?')
      a[second[i] - 'a'] = true;
    else
      cnt++;
  vector<int> ans;
  for (int i = 0; i < k; i++) {
    if (!a[i]) ans.push_back(i);
  }
  if (cnt < ans.size()) {
    cout << "IMPOSSIBLE\n";
    return 0;
  }
  int start;
  if (n % 2)
    start = n / 2;
  else
    start = n / 2 - 1;
  for (int i = start; i >= 0; i--) {
    int j = n - i - 1;
    if (second[i] == '?') {
      if (ans.size() == 0) {
        second[i] = 'a';
        second[j] = 'a';
        continue;
      }
      second[i] = (char)(ans.back() + 'a');
      second[j] = (char)(ans.back() + 'a');
      ans.pop_back();
    }
  }
  cout << second << endl;
  return 0;
}
