#include <bits/stdc++.h>
using namespace std;
const int M = 110;
int T, du[26], G[26][2], flag, vis[26], f[26];
char s[M];
void dfs1(int x, int p) {
  if (vis[x]) {
    flag = 0;
    return;
  }
  vis[x] = 1;
  for (int i = 0; i < 2; i++)
    if (G[x][i] != -1 && G[x][i] != p) dfs1(G[x][i], x);
}
bool push(int x, int y) {
  if (G[y][0] == x || G[y][1] == x)
    return 1;
  else if (du[y] == 0) {
    du[y]++;
    G[y][0] = x;
    return 1;
  } else if (du[y] == 1) {
    du[y]++;
    G[y][1] = x;
    return 1;
  } else
    return 0;
}
void dfs(int x) {
  if (vis[x]) return;
  vis[x] = 1;
  putchar(x + 'a');
  for (int i = 0; i < 2; i++)
    if (!vis[G[x][i]] && G[x][i] != -1) dfs(G[x][i]);
}
int main() {
  scanf("%d", &T);
  while (T--) {
    memset(vis, 0, sizeof(vis));
    memset(du, 0, sizeof(du));
    for (int i = 0; i < 26; i++) G[i][1] = G[i][0] = -1;
    flag = 1;
    scanf("%s", s);
    int len = strlen(s);
    for (int i = 0; i < len - 1; i++) {
      int a = s[i] - 'a', b = s[i + 1] - 'a';
      if (push(a, b) + push(b, a) < 2) {
        flag = 0;
        break;
      }
    }
    for (int i = 0; i < 26; i++)
      if (!vis[i]) dfs1(i, -2);
    memset(vis, 0, sizeof(vis));
    if (!flag)
      printf("NO\n");
    else {
      printf("YES\n");
      for (int i = 0; i < 26; i++) {
        if (du[i] == 0) {
          vis[i] = 1;
          putchar(i + 'a');
        } else if (!vis[i] && du[i] == 1)
          dfs(i);
      }
      printf("\n");
    }
  }
}
