#include<bits/stdc++.h>
using namespace std;
#define int long long
using ll = long long;
const int maxn = 5e6 + 5;
const string a("bdpqnuosxz");
const string b("qpdbunosxz");
const ll mod = 1e9 + 7, base = 397;
int pre[maxn], p[maxn];
int pre_hash(int l, int r){
return ((pre[r] - pre[l - 1] * p[r - l + 1]) % mod + mod) % mod;
}
void solve()
{
string s;
cin >> s;
int n = s.size();
s = '*' + s;
for (int i = 1; i <= n; ++i)
{
if (a.find(s[i]) == -1)
{
cout << "No\n";
return;
}
}
string t = s;
for (int i = n; i >= 1; --i)
{
int fd = a.find(s[i]);
t += b[fd];//t是s拼接上 经过字符反转和整个字符串翻转的s
}
//cout << t << '\n';
// get p
//vector<ll> p(n + 3);
// get hash
//vector<ll> pre(n * 2 + 3);
//pre[0] = s[0];
for (int i = 1; i <= n * 2; ++i)
{
pre[i] = (pre[i - 1] * base % mod + t[i]) % mod;
}
int l = 1, r1 = n * 2;
for (int r = 1, l1 = n * 2; r <= n; ++r, --l1){
//在s进行分割出[l, r],如果[l, r]是中心对称的,那么t的[l, r]的子串与t的[l1, r1]子串相同
//然后l跳到r + 1(即在s中分割出尽可能短的中心对称串)
if (pre_hash(l, r) == pre_hash(l1, r1))
r1 = l1 - 1, l = r + 1;
}
if (l == n + 1)
cout << "Yes\n";
else
cout << "No\n";
}
signed main(){
ios::sync_with_stdio(0);
cin.tie(0);
p[0] = 1;
for (int i = 1; i <= maxn - 5; ++i)
p[i] = p[i - 1] * base % mod;
int T;
cin >> T;
while(T--){
solve();
}
return 0;
}