#include <bits/stdc++.h>
using namespace std;
#define MOD 1000000007
//#define N 1000005
typedef long long ll;
const ll LLINF=(ll)(1e18);
// const int mx=1e5+7;
// int n,m;
// bool visited[mx];
//vector<int> a(mx),b(mx);
//vector<int> g(mx);
// int deg[mx], val[mx];
// vector<int> adj[mx];
// int col[mx], d[mx];
// vector<int> ans;
//---dfs--
//vector<ll> val(mx);
// ll leaf[mx], a[mx];
// ll ans=0;
// int sz=0;
// void dfs(int s, int e){
// 	//if(visited[s]) return;
// 	//visited[s]=true;
// 	if(adj[s].size()==0) leaf[s]=1;
// 	for(int i:adj[s]){
// 		if(i!=e){
// 			dfs(i,s);
// 			val[s]+=val[i];
// 			leaf[s]+=leaf[i];
// 		}
// 	}
// 	val[s]+=a[s];
// 	ans=max(ans,(val[s]+leaf[s]-1)/leaf[s]);
// }
//---dfs---

//---primes---
// const ll N = 1e6 + 10;

// bool prime[N];
 
// int spf[N];
 
// void calc(){
// 	for(ll i = 2; i<=1e3; i++){
// 		if(prime[i])
// 			continue;
// 		spf[i] = i;
// 		for(ll j = i * i; j < N; j += i){
// 			prime[j] = 1;
// 			spf[j] = i;
// 		}
// 	}
// 	for(ll i = 2; i < N; i++)
// 		if(!spf[i])
// 			spf[i] = i;
// }

// vector<pair<ll,ll>> getp(ll x){
// 	ll curr=x;
// 	vector<pair<ll,ll>> ans;
// 	while(curr>1){
// 		ll a=spf[curr];
// 		ll count=0;
// 		while(curr%a==0){ curr/=a; count++;}
// 		ans.push_back(make_pair(a,count));
// 	}
// 	return ans;
// }

// bool ispr(ll n) {
// 	if(n==1) return false;
//     for (ll i=2;i*i<=n;++i){
//         if(n%i==0){
//             return false;
//         }
//     }
//     return true;
// }
//---primes---

//---segment_tree---
// int upd(int t,int val,int l,int r,int y, int z){
// 	if(y<l||y>r) return tr[val];
// 	if(l==r) return tr[val]=z;
// 	int s=(l+r)/2;
// 	upd(t^1,2*val+1,l,s,y,z);
// 	upd(t^1,2*val+2,s+1,r,y,z);
// 	if(t) tr[val]=tr[2*val+1]|tr[2*val+2];
// 	else tr[val]=tr[2*val+1]^tr[2*val+2];
// 	return tr[val];
// }
//int query(){}
//---segment_tree---


//const int maxn = 2e5+7;
//const ll MOD = 998244353;

// ll fact[maxn], inv[maxn];

// ll deg(ll x, ll d){
// 	if(d<0) d+=MOD-1;
// 	ll y=1;
// 	while(d){
// 		if(d&1) (y*=x)%=MOD;
// 		d/=2;
// 		(x*=x)%=MOD;
// 	}
// 	return y;
// }

// ll cnk(ll n, ll k){
// 	if(k<0||k>n) return 0;
// 	return fact[n]*inv[k]%MOD*inv[n-k]%MOD;
// }



//long long C(int n, int m) {
// 	long long res = 1;
// 	for (int i = 0; i < m; ++i) {
// 		res = res * (n - i) / (i + 1);
// 	}
// 	return res;
// }


// ll power(ll x,ll y){
//     ll res=1;
//     if(x==0) return 0;
//     while(y>0){
//         if(y&1) res = (res*x)%MOD ;  
//         y=y>>1;
//         x=(x*x)%MOD;   
//     } 
//     return res; 
// }

// ll add(ll x,ll y){
//     x += y;
//     while(x >= MOD) x -= MOD;
//     while(x < 0) x += MOD;
//     return x;
// }

// ll mul(ll x, ll y){
//     return (x * 1ll * y) % MOD;
// }

// ll divide(ll x, ll y){
// 	return mul(x,power(y,MOD-2));
// }

bool pal(string s){
	bool ok=true;
	int n=(int)s.size();
	for(int i=0;i<n/2;i++){
		if(s[i]!=s[n-1-i]){
			ok=false;
			break;
		}
	}
	return ok; 
}

int main(){
	ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);cout<<setprecision(25);
	int T;
	cin>>T;
	while(T--){
        string s;
		cin>>s;
		string l='a'+s, r=s+'a';
		if(!pal(l)){
			cout<<"YES\n";
			cout<<l<<"\n";
		}
		else if(!pal(r)){
			cout<<"YES\n";
			cout<<r<<"\n";
		}
		else{
			cout<<"NO\n";
		}
 	}		
}