#include <bits/stdc++.h>   using namespace std;   int k;   string s;   int main() {     cin >> k;     cin >> s;     int n = s.length();     for (int i = 0; i < n; ++i) {       if (s[i] ==  ?  && s[n - i - 1] ==  ? ) {         continue;       } else if (s[i] ==  ? ) {         s[i] = s[n - i - 1];       } else if (s[n - i - 1] ==  ? ) {         s[n - i - 1] = s[i];       } else if (s[i] != s[n - i - 1]) {         cout <<  IMPOSSIBLE ;         return 0;       }     }     bool flag[26];     memset(flag, 0, sizeof(flag));     for (int i = 0; i < n; ++i) {       if (s[i] !=  ? ) {         flag[s[i] -  a ] = true;       }     }     int miss = 0;     for (int c = 0; c < k; ++c) {       if (!flag[c]) {         ++miss;       }     }     int have = 0;     for (int i = 0; i <= n - i - 1; ++i) {       if (s[i] ==  ? ) {         ++have;       }     }     if (miss > have) {       cout <<  IMPOSSIBLE ;       return 0;     }     for (int i = 0; i < n; ++i) {       if (s[i] ==  ? ) {         if (have > miss) {           s[i] = s[n - i - 1] =  a ;         } else {           for (int c = 0; c < k; ++c) {             if (!flag[c]) {               s[i] = s[n - i - 1] = c +  a ;               flag[c] = true;               break;             }           }           --miss;         }         --have;       }     }     cout << s << endl;     return 0;   }   