T = int(input())
for tc in range(T):
s = [c for c in input()]
n = len(s)
i = 0
while (i < n):
if (s[i] == '?'):
prv = 'd' if i == 0 else s[i - 1]
nxt = 'e' if i + 1 >= n else s[i + 1]
for x in ['a', 'b', 'c']:
if (x != prv) and (x != nxt):
s[i] = x
break
else:
i += 1
ok = True
for i in range(n - 1):
if (s[i] == s[i + 1]):
print("-1")
ok = False
break
if (ok == True):
print("".join(s))
#include<bits/stdc++.h>
using namespace std;
int main(){
int t;
cin>>t;
while(t--){
string s;
cin>>s;
int flag=0;
int n=s.length();
for(int i=0;i<n-1;i++){
if(s[i]!='?'&&s[i]==s[i+1]){
cout<<"-1"<<endl;
flag=1;
break;
}
}
if(flag==0){
if(n==1&&s[0]=='?'){
s[0]='a';
}
else{
for(int i=0;i<n;i++){
if(i==0){
if(s[i]=='?'&&s[i+1]=='a'){
s[i]='b';
}
if(s[i]=='?'&&s[i+1]=='b'){
s[i]='c';
}
if(s[i]=='?'&&s[i+1]=='c'){
s[i]='a';
}
if(s[i]=='?'&&s[i+1]=='?'){
s[i]='a';
}
}
else{
if(i==n-1){
if(s[i]=='?'&&s[i-1]=='a'){
s[i]='b';
}
if(s[i]=='?'&&s[i-1]=='b'){
s[i]='c';
}
if(s[i]=='?'&&s[i-1]=='c'){
s[i]='a';
}
}
else{
if(s[i]=='?'&&s[i-1]=='a'&&s[i+1]=='a'){
s[i]='b';
}
else{
if(s[i]=='?'&&s[i-1]=='b'&&s[i+1]=='b'){
s[i]='c';
}
else{
if(s[i]=='?'&&s[i-1]=='c'&&s[i+1]=='c'){
s[i]='a';
}
else{
if(s[i]=='?'&&s[i-1]=='a'&&s[i+1]=='b'){
s[i]='c';
}
else{
if(s[i]=='?'&&s[i-1]=='a'&&s[i+1]=='c'){
s[i]='b';
}
else{
if(s[i]=='?'&&s[i-1]=='b'&&s[i+1]=='a'){
s[i]='c';
}
else{
if(s[i]=='?'&&s[i-1]=='b'&&s[i+1]=='c'){
s[i]='a';
}else{
if(s[i]=='?'&&s[i-1]=='c'&&s[i+1]=='a'){
s[i]='b';
}
else{
if(s[i]=='?'&&s[i-1]=='c'&&s[i+1]=='b'){
s[i]='a';
}
else{
if(s[i]=='?'&&s[i+1]=='?'&&s[i-1]=='a'){
s[i]='b';
}
else{
if(s[i]=='?'&&s[i+1]=='?'&&s[i-1]=='b'){
s[i]='c';
}
else{
if(s[i]=='?'&&s[i+1]=='?'&&s[i-1]=='c'){
s[i]='a';
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
cout<<s<<endl;
}
}
}
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 |
1588. Sum of All Odd Length Subarrays | 1662. Check If Two String Arrays are Equivalent |
1832. Check if the Sentence Is Pangram | 1678. Goal Parser Interpretation |
1389. Create Target Array in the Given Order | 1313. Decompress Run-Length Encoded List |
1281. Subtract the Product and Sum of Digits of an Integer | 1342. Number of Steps to Reduce a Number to Zero |
1528. Shuffle String | 1365. How Many Numbers Are Smaller Than the Current Number |
771. Jewels and Stones | 1512. Number of Good Pairs |