#include<bits/stdc++.h>
#include<ext/pb_ds/assoc_container.hpp>
#include<ext/pb_ds/tree_policy.hpp>
using namespace __gnu_pbds;
using namespace std;
template <typename T> using pbds = tree<T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update>;
#define ll long long
#define hello() ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define nl "\n"
#define yes cout<<"YES"<<nl
#define no cout<<"NO"<<nl
#define ss second
#define ff first
#define all(v) v.begin(),v.end()
#define eb emplace_back
#define sz(x) (int)(x).size()
#define pb push_back
#define mod 1000000007
#define mem(a,x) memset(a,x,sizeof(a))
int bit(ll a,int i){if(a&(1LL<<i)) return 1;return 0;}
int dx[]={1,-1,0,0,1,1,-1,-1};
int dy[]={0,0,1,-1,1,-1,1,-1};
ll isqrt (ll x){ll ans = 0;for (ll k = 1LL << 30; k != 0; k /= 2){if ((ans + k) * (ans + k) <= x) {ans += k;}}return ans;}
ll bin(ll n,ll pow){ll result=1;while(pow){if(pow&1){result=(result * n);}n=(n*n);pow>>=1;}return result;}
ll binmod(ll a,ll b,ll MOD){ll ans=1;a%=MOD;while(b){if(b&1)ans=(ans*a)%MOD;b/=2;a=(a*a)%MOD;}return ans;}
ll inverse(ll a,ll MOD){return binmod(a,MOD-2,MOD);}
const int N=2e5+12;
const int M=998244353;
#define int long long int
void solve(){
string s;
cin>>s;
int n=sz(s);
map<char,int>mp;
for(auto u:s)mp[u]++;
int mx=0;
char ch;
string ans(n,'*');
for(auto u:mp){
if(u.second>mx){
mx=u.second;
ch=u.first;
}
else if(u.second==mx){
ch=min(ch,u.first);
}
}
if(mx>(n+1)/2){
cout<<-1<<nl;return;
}
if(mx==(n+1)/2 && mx*2-1==n){
for(int i=0;i<n;i+=2)ans[i]=ch;
int j=1;
for(char c='a';c<='z';c++){
if(ch==c)continue;
while(mp[c]>0){
ans[j]=c;
j+=2;
mp[c]--;
}
}
cout<<ans<<nl;
}
else{
int j=0,cnt=0;
while(1){
if(cnt==n)break;
for(char c='a';c<='z';c++){
if(mp[c]>0){
ans[j]=c;
j++;
mp[c]--;
cnt++;
}
}
}
cout<<ans<<nl;
}
}
signed main()
{
hello();
cout.precision(10); cout.setf(ios::fixed);
int tc=1;
cin>>tc;
for(int j=1;j<=tc;j++){
// cout<<"Case #"<<j<<": ";
solve();
}
}