#include <bits/stdc++.h>
#pragma GCC opgimize(3)
using namespace std;
string s;
int a[100];
int i, j, m;
bool ok;
bool nice;
int main() {
  cin >> s;
  if (s.size() < 26) {
    cout << -1;
    return 0;
  }
  for (i = 0; i <= s.size() - 26; i++) {
    if (nice) {
      break;
    }
    ok = 1;
    memset(a, 0, sizeof(a));
    for (j = i; j < i + 26; j++) {
      if (s[j] != '?') {
        a[s[j]]++;
      }
    }
    for (j = 'A'; j <= 'Z'; j++) {
      if (a[j] > 1) {
        ok = 0;
        break;
      }
    }
    if (ok) {
      nice = 1;
      for (j = i; j < i + 26; j++) {
        if (s[j] == '?') {
          for (m = 'A'; m <= 'Z'; m++) {
            if (!a[m]) {
              break;
            }
          }
          s[j] = m;
          a[m]++;
        }
      }
    }
  }
  if (nice) {
    for (i = 0; i < s.size(); i++) {
      if (s[i] == '?') {
        s[i] = 'A';
      }
    }
    cout << s;
  } else {
    cout << -1;
  }
  return 0;
}
