#include <bits/stdc++.h>
using namespace std;
int n, m, len;
char str[50005];
map<char, int> mp;
void print(int x, long long st) {
  int l = x - 25;
  for (int i = 0; i < l; ++i) {
    if (str[i] == '?')
      printf("A");
    else
      printf("%c", str[i]);
  }
  for (int i = l; i <= x; ++i) {
    if (str[i] == '?')
      for (int j = 0; j < 26; ++j)
        if (st & (1 << j))
          continue;
        else {
          printf("%c", (char)('A' + j));
          st |= (1 << j);
          break;
        }
    else
      printf("%c", str[i]);
  }
  for (int i = x + 1; i < len; ++i) {
    if (str[i] == '?')
      printf("A");
    else
      printf("%c", str[i]);
  }
}
int main() {
  scanf("%s", str);
  len = strlen(str);
  for (char i = 'A'; i <= 'Z'; ++i) {
    mp[i] = (int)(i - 'A');
  }
  if (len < 26) {
    printf("-1");
    return 0;
  }
  int l = 0, r = 0, hs = 0, cnt = 0;
  long long st = 0;
  for (int l = 0; l < len; ++l) {
    st = 0, hs = 0, cnt = 0;
    for (int i = l; i <= len - 1 && i <= l + 25; ++i) {
      if (str[i] == '?') {
        cnt++;
        if (cnt + hs == 26) {
          print(i, st);
          return 0;
        }
        continue;
      }
      int p = mp[str[i]];
      if (st & (1 << p)) {
        hs = 0, cnt = 0, st = 0;
      } else {
        st |= (1 << p);
        hs++;
        if (hs + cnt == 26) {
          print(i, st);
          return 0;
        }
      }
    }
  }
  printf("-1");
  return 0;
}
