#include <bits/stdc++.h>
using namespace std;
int q, n, m, cnt;
int horizontal_min[26], horizontal_max[26], vertical_min[26], vertical_max[26];
int last_horizontal_min, last_horizontal_max, last_vertical_min,
    last_vertical_max, last_index;
char table[2005][2005];
void read() {
  for (int i = 0; i < 26; i++) {
    vertical_min[i] = 2000000000;
    vertical_max[i] = -1;
    horizontal_min[i] = 2000000000;
    horizontal_max[i] = -1;
  }
  cnt = 0;
  cin >> n >> m;
  for (int i = 1; i <= n; i++)
    for (int j = 1; j <= m; j++) {
      cin >> table[i][j];
      char c = table[i][j];
      if (c != '.') {
        vertical_min[c - 'a'] = min(vertical_min[c - 'a'], i);
        vertical_max[c - 'a'] = max(vertical_max[c - 'a'], i);
        horizontal_min[c - 'a'] = min(horizontal_min[c - 'a'], j);
        horizontal_max[c - 'a'] = max(horizontal_max[c - 'a'], j);
      }
    }
}
bool goodMatrix() {
  for (int c = 25; c >= 0; c--) {
    if (vertical_max[c] == -1) continue;
    if (vertical_min[c] != vertical_max[c] &&
        horizontal_min[c] != horizontal_max[c])
      return false;
    cnt++;
    for (int i = vertical_min[c]; i <= vertical_max[c]; i++)
      for (int j = horizontal_min[c]; j <= horizontal_max[c]; j++) {
        if (table[i][j] != '*' && table[i][j] != c + 'a') return false;
        table[i][j] = '*';
      }
  }
  return true;
}
void genLastSnakesPositon() {
  for (int c = 25; c >= 0; c--)
    if (vertical_max[c] != -1) {
      last_vertical_min = vertical_min[c];
      last_vertical_max = vertical_max[c];
      last_horizontal_min = horizontal_min[c];
      last_horizontal_max = horizontal_max[c];
      last_index = c;
      return;
    }
  last_index = -1;
}
void solve() {
  read();
  if (goodMatrix()) {
    genLastSnakesPositon();
    cout << "YES\n" << last_index + 1 << '\n';
    for (int c = 0; c <= last_index; c++)
      if (vertical_max[c] == -1)
        cout << last_vertical_min << ' ' << last_horizontal_min << ' '
             << last_vertical_max << ' ' << last_horizontal_max << '\n';
      else
        cout << vertical_min[c] << ' ' << horizontal_min[c] << ' '
             << vertical_max[c] << ' ' << horizontal_max[c] << '\n';
  } else
    cout << "NO\n";
}
int main() {
  cin >> q;
  while (q--) solve();
  return 0;
}
