#include <bits/stdc++.h>
using namespace std;
const double PI = acos(-1);
const double eps = 1e-9;
const int inf = 2000000000;
const long long int infLL = 90000000000000000;
const int MOD = 1000000007;
int MOD1 = 1000000007;
int MOD2 = 1000000009;
inline bool checkBit(long long int n, long long int i) {
  return n & (1LL << i);
}
inline long long int setBit(long long int n, long long int i) {
  return n | (1LL << i);
  ;
}
inline long long int resetBit(long long int n, long long int i) {
  return n & (~(1LL << i));
}
int dx[] = {0, 0, +1, -1};
int dy[] = {+1, -1, 0, 0};
inline bool EQ(double a, double b) { return fabs(a - b) < 1e-9; }
inline bool isLeapYear(long long int year) {
  return (year % 400 == 0) || (year % 4 == 0 && year % 100 != 0);
}
inline void normal(long long int &a) {
  a %= MOD;
  (a < 0) && (a += MOD);
}
inline long long int modMul(long long int a, long long int b) {
  a %= MOD, b %= MOD;
  normal(a), normal(b);
  return (a * b) % MOD;
}
inline long long int modAdd(long long int a, long long int b) {
  a %= MOD, b %= MOD;
  normal(a), normal(b);
  return (a + b) % MOD;
}
inline long long int modSub(long long int a, long long int b) {
  a %= MOD, b %= MOD;
  normal(a), normal(b);
  a -= b;
  normal(a);
  return a;
}
inline long long int modPow(long long int b, long long int p) {
  long long int r = 1LL;
  while (p) {
    if (p & 1) r = modMul(r, b);
    b = modMul(b, b);
    p >>= 1LL;
  }
  return r;
}
inline long long int modDiv(long long int a, long long int b) {
  return modMul(a, modPow(b, MOD - 2));
}
using namespace std;
map<char, long long int> mp;
vector<char> ans;
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  ;
  string a;
  cin >> a;
  if (a.length() < 26) {
    cout << "-1";
    return 0;
  }
  long long int n, i, j, s, flag = 0LL, anFlag = 0LL, e = 0LL, cnt, cnt2 = 0LL;
  n = a.length();
  for (i = 0; i < n && e == 0; i++) {
    cnt = 0LL;
    flag = 0LL;
    cnt2 = 0LL;
    for (j = i; j < i + 26 && j < n; j++) {
      if (a[j] == '?')
        cnt++;
      else {
        if (mp[a[j]] == 1) {
          flag = 1LL;
        }
        mp[a[j]]++;
      }
      cnt2++;
    }
    if (!flag && cnt2 >= 26) {
      s = mp.size();
      long long int f = 26 - s;
      for (char ch = 'A'; ch <= 'Z'; ch++) {
        if (!mp[ch]) {
          ans.push_back(ch);
        }
      }
      long long int v = 0;
      if (cnt == f) {
        for (j = i; j < i + 26; j++) {
          if (a[j] == '?') {
            a[j] = ans[v];
            v++;
          }
        }
        e = 1LL;
      }
      anFlag = 1LL;
    }
    mp.clear();
  }
  if (!anFlag) {
    cout << "-1";
  } else {
    for (i = 0; i < n; i++) {
      if (a[i] == '?') {
        cout << "A";
      } else {
        cout << a[i];
      }
    }
  }
  return 0;
}
