#include <bits/stdc++.h>
using namespace std;
const int N = 1e6 + 5;
char arr[N];
int vis[N];
char ans[N];
int main() {
  int n;
  while (cin >> n) {
    cin >> arr;
    memset(vis, 0, sizeof vis);
    for (int i = 0; i <= 1000; i++) ans[i] = 'a';
    int len = strlen(arr);
    int sum = 0, flag = 1;
    for (int i = 0; i < len / 2; i++) {
      if (arr[i] == '?' && arr[len - i - 1] != '?') {
        arr[i] = arr[len - i - 1];
        vis[arr[i] - 'a' + 1] = 1;
      } else if (arr[i] == '?' && arr[len - i - 1] == '?') {
        sum++;
      } else if (arr[len - i - 1] == '?' && arr[i] != '?') {
        arr[len - i - 1] = arr[i];
        vis[arr[i] - 'a' + 1] = 1;
      } else if (arr[i] != arr[len - i - 1]) {
        flag = 0;
        break;
      } else {
        vis[arr[i] - 'a' + 1] = 1;
      }
    }
    if (len % 2 == 1) {
      if (arr[len / 2] == '?') {
        sum++;
      } else {
        vis[arr[len / 2] - 'a' + 1] = 1;
      }
    }
    int s = 0, t = 0;
    for (int i = 1; i <= n; i++) {
      if (vis[i]) {
        s++;
      } else {
        ans[t++] = i + 'a' - 1;
      }
    }
    for (int i = n + 1; i <= 26; i++) {
      if (vis[i]) {
        flag = 0;
        break;
      }
    }
    if (!flag || (n - s) > sum) {
      cout << "IMPOSSIBLE" << endl;
    } else {
      int x = sum - n + s;
      for (int i = 0; i < len / 2 && x > 0; i++) {
        if (arr[i] == '?') {
          arr[i] = 'a';
          arr[len - i - 1] = 'a';
          x--;
        }
      }
      int aa = 0;
      for (int i = 0; i < len / 2; i++) {
        if (arr[i] == '?') {
          arr[i] = ans[aa++];
          arr[len - i - 1] = arr[i];
        }
      }
      if (len % 2 == 1 && arr[len / 2] == '?') {
        arr[len / 2] = ans[aa];
      }
      for (int i = 0; i < len; i++) cout << arr[i];
      cout << endl;
    }
  }
  return 0;
}
