#include <bits/stdc++.h>
using namespace std;
char s[200];
int a[30];
bool flag;
char c = 'Q';
int main() {
  int k;
  scanf("%d", &k);
  scanf("%s", s + 1);
  int len = strlen(s + 1);
  for (int i = 1; i <= len; i++) {
    if (s[i] != '?') a[s[i] - 'a' + 1]++;
  }
  if (len % 2) {
    if (s[len / 2 + 1] == '?') {
      flag = 0;
      for (int j = k; j >= 1; j--) {
        if (a[j] == 0) {
          a[j]++;
          flag = 1;
          s[len / 2 + 1] = 'a' + j - 1;
          break;
        }
      }
      if (!flag) s[len / 2 + 1] = 'a';
    }
  }
  for (int i = len / 2; i >= 1; i--) {
    if (s[i] != '?' && s[len - i + 1] != '?') {
      if (s[i] == s[len - i + 1])
        continue;
      else {
        goto Next;
      }
    } else if (s[i] == '?' && s[len - i + 1] == '?') {
      flag = 0;
      for (int j = k; j >= 1; j--) {
        if (a[j] == 0) {
          a[j] += 2;
          flag = 1;
          s[i] = s[len - i + 1] = 'a' + j - 1;
          break;
        }
      }
      if (!flag) s[i] = s[len - i + 1] = 'a';
    } else if (s[i] == '?' && s[len - i + 1] != '?')
      s[i] = s[len - i + 1];
    else
      s[len - i + 1] = s[i];
  }
  for (int j = 1; j <= k; j++) {
    if (a[j] == 0) {
      goto Next;
    }
  }
  printf("%s\n", s + 1);
  return 0;
Next:;
  printf("IMPOSSIBLE\n");
  return 0;
}
