import string, sys
input = lambda: sys.stdin.buffer.readline().decode().strip()
print = sys.stdout.write
s = input()
for i in range(len(s) - 25):
substring = s[i: i + 26]
if all(substring.count(char) == 1 for char in substring if char != "?"):
setsub = set(substring)
for char in set(string.ascii_uppercase) - setsub:
substring = substring.replace("?", char, 1)
s = s[0:i] + substring + s[i + 26:]
ans = s.replace("?", "A")
break
else:
ans = "-1"
print(ans)
#include<bits/stdc++.h>
using namespace std;
#define ff first
#define ss second
#define all(x) x.begin(),x.end()
#define yes cout<<"YES\n"
#define no cout<<"NO\n"
#define lop(k,n) for(int i=k;i<n;i++)
#define int long long
#define sz(x) long(x.size())
#define te int t;cin>>t;while(t--)
#define el '\n'
#define pi pair<int,int>
string P="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
void sol(){
string s;cin>>s;
int l=0,r=0;
int n=sz(s);
int ok=0;
string can="";
for(int i=0;i<n;i++){
string a=s.substr(i,26);
set<int>st;
int x=0;
for(char c : a){
if(c=='?')x++;
else st.insert(c);
}
if(st.size()+x==26){
can = a;
l=i;
r=i+26;
ok=1;
}
if(ok)break;
}
if(ok){
string ss = "";
for(char c : P){
if(can.find(c)==string ::npos)ss+=c;
}
int x=0;
for(int i=0;i<sz(can);i++){
if(can[i]=='?'){
can[i]=ss[x];
x++;
}
}
string ans =s.substr(0,l)+can+s.substr(r);
for(int i=0;i<ans.size();i++){
if(ans[i]=='?'){
if(!i)ans[i]=P[0];
else
ans[i]=ans[i-1];
}
}
cout<<ans;
}
else cout<<-1;
}
int32_t main(){
ios_base::sync_with_stdio(false);
cin.tie(0);cout.tie(0);
sol();
}
1356. Sort Integers by The Number of 1 Bits | 922. Sort Array By Parity II |
344. Reverse String | 1047. Remove All Adjacent Duplicates In String |
977. Squares of a Sorted Array | 852. Peak Index in a Mountain Array |
461. Hamming Distance | 1748. Sum of Unique Elements |
897. Increasing Order Search Tree | 905. Sort Array By Parity |
1351. Count Negative Numbers in a Sorted Matrix | 617. Merge Two Binary Trees |
1450. Number of Students Doing Homework at a Given Time | 700. Search in a Binary Search Tree |
590. N-ary Tree Postorder Traversal | 589. N-ary Tree Preorder Traversal |
1299. Replace Elements with Greatest Element on Right Side | 1768. Merge Strings Alternately |
561. Array Partition I | 1374. Generate a String With Characters That Have Odd Counts |
1822. Sign of the Product of an Array | 1464. Maximum Product of Two Elements in an Array |
1323. Maximum 69 Number | 832. Flipping an Image |
1295. Find Numbers with Even Number of Digits | 1704. Determine if String Halves Are Alike |
1732. Find the Highest Altitude | 709. To Lower Case |
1688. Count of Matches in Tournament | 1684. Count the Number of Consistent Strings |