#include <bits/stdc++.h>
using namespace std;
const int MOD(1000000007);
const int INF((1 << 30) - 1);
const int MAXN();
int chk[26];
int main() {
  string a;
  cin >> a;
  if (a.size() < 26) {
    printf("-1");
    return 0;
  }
  int numfail = 0;
  for (int i = 0; i < 25; i++) {
    if (a[i] != '?') {
      if (chk[a[i] - 'A'] == 1) numfail++;
      chk[a[i] - 'A']++;
    }
  }
  bool found = false;
  for (int i = 25; i <= a.size() - 1; i++) {
    if (a[i] != '?') {
      if (chk[a[i] - 'A'] == 1) numfail++;
      chk[a[i] - 'A']++;
    }
    if (numfail == 0) {
      int k = 0;
      for (int j = i - 25; j <= i; j++) {
        if (a[j] == '?') {
          while (chk[k] != 0) k++;
          a[j] = ('A' + k);
          k++;
        }
      }
      found = true;
      break;
    }
    if (a[i - 25] != '?') {
      if (chk[a[i - 25] - 'A'] == 2) numfail--;
      chk[a[i - 25] - 'A']--;
    }
  }
  if (!found)
    printf("-1");
  else {
    for (int i = 0; i < a.size(); i++) {
      if (a[i] == '?') a[i] = 'A';
    }
    cout << a;
  }
}
