#include<bits/stdc++.h>
using namespace std;
#define uniq(x) x.erase(unique(x.begin(),x.end()), x.end()) //Unique value find from vector
#define upper(arr,n,fixed) upper_bound(arr,arr+n,fixed)-arr //Upper value search;
#define lower(arr,n,fixed) upper_bound(arr,arr+n,fixed)-arr //Lower value search;
#define max3(a,b,c) max(max(a,b),c)//maximum value find three value;
#define min3(a,b,c) min(min(a,b),c)//minimum value find three value;
#define PI acos(-1.0)//PI Calculation
#define LL long long
#define AND(a,b) ((a) & (b))
#define OR(a,b) ((a)|(b))
#define XOR(a,b) ((a) ^ (b))
#define mp make_pair
#define sqr(x) ((x)*(x))
#define sqrt(x) sqrt(1.0*(x))
#define INF_MAX 2147483647
#define INF_MIN -2147483647
#define MX 1000005
#define MOD 1000000007
template<typename T> T POW(T b,T p) //Pow calculation
{
T r=1;
while(p)
{
if(p&1)r=(r*b);
b=(b*b);
p>>=1;
}
return r;
}
template<typename T> T BigMod(T b,T p,T m) //BigMod Calculation
{
T r=1;
while(p)
{
if(p&1)r=(r*b)%m;
b=(b*b)%m;
p>>=1;
}
return r;
}
//||--------------------------->||Main_Code_Start_Here||<---------------------------------||
int main()
{
//freopen("a.in", "r", stdin);
//freopen("a.out", "w", stdout);
int test;
string s;
cin>>test;
while(test--)
{
cin>>s;
for(int i=0; i<s.size()/2; i++)
{
if(s[i]=='.')
{
if(s[i]==s[s.size()-1-i])
{
s[i]='a';
s[s.size()-1-i]='a';
}
}
}
if(s.size()%2) s[s.size()/2]='a';
//cout<<"s = "<<s<<endl;
for(int i=0; i<s.size()/2; i++)//left string checking
{
if(s[i]=='.')
{
s[i]=s[s.size()-1-i];
}
}
for(int i=s.size()-1,k=0; i>s.size()/2; i--,k++)//Right string checking
{
if(s[i]=='.')
{
s[i]=s[k];
}
}
//cout<<" ss = "<<s<<endl;
bool flag=true;
for(int i=0; i<s.size()/2; i++)
{
if(s[i]!=s[s.size()-1-i])
{
flag=false;
}
}
if(flag==false) cout<<"-1"<<endl;
else cout<<s<<endl;
}
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKI2RlZmluZSB1bmlxKHgpICB4LmVyYXNlKHVuaXF1ZSh4LmJlZ2luKCkseC5lbmQoKSksIHguZW5kKCkpIC8vVW5pcXVlIHZhbHVlIGZpbmQgZnJvbSB2ZWN0b3IKI2RlZmluZSB1cHBlcihhcnIsbixmaXhlZCkgdXBwZXJfYm91bmQoYXJyLGFycituLGZpeGVkKS1hcnIgIC8vVXBwZXIgdmFsdWUgc2VhcmNoOwojZGVmaW5lIGxvd2VyKGFycixuLGZpeGVkKSB1cHBlcl9ib3VuZChhcnIsYXJyK24sZml4ZWQpLWFyciAgLy9Mb3dlciB2YWx1ZSBzZWFyY2g7CiNkZWZpbmUgbWF4MyhhLGIsYykgbWF4KG1heChhLGIpLGMpLy9tYXhpbXVtIHZhbHVlIGZpbmQgdGhyZWUgdmFsdWU7CiNkZWZpbmUgbWluMyhhLGIsYykgbWluKG1pbihhLGIpLGMpLy9taW5pbXVtIHZhbHVlIGZpbmQgdGhyZWUgdmFsdWU7CiNkZWZpbmUgUEkgYWNvcygtMS4wKS8vUEkgQ2FsY3VsYXRpb24KI2RlZmluZSBMTCBsb25nIGxvbmcKI2RlZmluZSBBTkQoYSxiKSAoKGEpICYgKGIpKQojZGVmaW5lIE9SKGEsYikgKChhKXwoYikpCiNkZWZpbmUgWE9SKGEsYikgKChhKSBeIChiKSkKI2RlZmluZSBtcCBtYWtlX3BhaXIKI2RlZmluZSBzcXIoeCkgKCh4KSooeCkpCiNkZWZpbmUgc3FydCh4KSBzcXJ0KDEuMCooeCkpCiNkZWZpbmUgSU5GX01BWCAyMTQ3NDgzNjQ3CiNkZWZpbmUgSU5GX01JTiAtMjE0NzQ4MzY0NwojZGVmaW5lIE1YIDEwMDAwMDUKI2RlZmluZSBNT0QgMTAwMDAwMDAwNwp0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBUIFBPVyhUIGIsVCBwKSAgICAgICAgICAvL1BvdyBjYWxjdWxhdGlvbgp7CiAgICBUIHI9MTsKICAgIHdoaWxlKHApCiAgICB7CiAgICAgICAgaWYocCYxKXI9KHIqYik7CiAgICAgICAgYj0oYipiKTsKICAgICAgICBwPj49MTsKICAgIH0KICAgIHJldHVybiByOwp9Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBUIEJpZ01vZChUIGIsVCBwLFQgbSkgLy9CaWdNb2QgQ2FsY3VsYXRpb24KewogICAgVCByPTE7CiAgICB3aGlsZShwKQogICAgewogICAgICAgIGlmKHAmMSlyPShyKmIpJW07CiAgICAgICAgYj0oYipiKSVtOwogICAgICAgIHA+Pj0xOwogICAgfQogICAgcmV0dXJuIHI7Cn0KCi8vfHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+fHxNYWluX0NvZGVfU3RhcnRfSGVyZXx8PC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXx8CmludCBtYWluKCkKewogICAgLy9mcmVvcGVuKCJhLmluIiwgInIiLCBzdGRpbik7CiAgICAvL2ZyZW9wZW4oImEub3V0IiwgInciLCBzdGRvdXQpOwogICAgaW50IHRlc3Q7CiAgICBzdHJpbmcgczsKICAgIGNpbj4+dGVzdDsKICAgIHdoaWxlKHRlc3QtLSkKICAgIHsKICAgICAgICBjaW4+PnM7CiAgICAgICAgZm9yKGludCBpPTA7IGk8cy5zaXplKCkvMjsgaSsrKQogICAgICAgIHsKICAgICAgICAgICAgaWYoc1tpXT09Jy4nKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpZihzW2ldPT1zW3Muc2l6ZSgpLTEtaV0pCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgc1tpXT0nYSc7CiAgICAgICAgICAgICAgICAgICAgc1tzLnNpemUoKS0xLWldPSdhJzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBpZihzLnNpemUoKSUyKSBzW3Muc2l6ZSgpLzJdPSdhJzsKICAgICAgICAvL2NvdXQ8PCJzID0gIjw8czw8ZW5kbDsKCgogICAgICAgIGZvcihpbnQgaT0wOyBpPHMuc2l6ZSgpLzI7IGkrKykvL2xlZnQgc3RyaW5nIGNoZWNraW5nCiAgICAgICAgewogICAgICAgICAgICBpZihzW2ldPT0nLicpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIHNbaV09c1tzLnNpemUoKS0xLWldOwogICAgICAgICAgICB9CiAgICAgICAgfQoKCgogICAgICAgIGZvcihpbnQgaT1zLnNpemUoKS0xLGs9MDsgaT5zLnNpemUoKS8yOyBpLS0saysrKS8vUmlnaHQgc3RyaW5nIGNoZWNraW5nCiAgICAgICAgewogICAgICAgICAgICBpZihzW2ldPT0nLicpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIHNbaV09c1trXTsKICAgICAgICAgICAgfQogICAgICAgIH0KCgoKCgogICAgICAgIC8vY291dDw8IiBzcyA9ICI8PHM8PGVuZGw7CgogICAgICAgIGJvb2wgZmxhZz10cnVlOwogICAgICAgIGZvcihpbnQgaT0wOyBpPHMuc2l6ZSgpLzI7IGkrKykKICAgICAgICB7CiAgICAgICAgICAgIGlmKHNbaV0hPXNbcy5zaXplKCktMS1pXSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgZmxhZz1mYWxzZTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYoZmxhZz09ZmFsc2UpIGNvdXQ8PCItMSI8PGVuZGw7CiAgICAgICAgZWxzZSBjb3V0PDxzPDxlbmRsOwoKCiAgICB9Cn0KCgo=