#include <bits/stdc++.h>
using namespace std;
#pragma warning(disable : 4996)
const int INF = 1e9;
const int MOD = 1000000007;
char board[2000][2001];
int vertical_min[26], vertical_max[26];
int horizontal_min[26], horizontal_max[26];
int main() {
  int T;
  scanf("%d", &T);
  while (T--) {
    int N, M;
    scanf("%d %d", &N, &M);
    for (int i = 0; i < N; i++) {
      scanf("%s", board[i]);
    }
    for (int i = 0; i < 26; i++) {
      vertical_min[i] = INF;
      vertical_max[i] = -INF;
      horizontal_min[i] = INF;
      horizontal_max[i] = -INF;
    }
    for (int i = 0; i < N; i++) {
      for (int j = 0; j < M; j++) {
        if (board[i][j] != '.') {
          int b = (int)(board[i][j] - 'a');
          vertical_min[b] = min(vertical_min[b], i);
          vertical_max[b] = max(vertical_max[b], i);
          horizontal_min[b] = min(horizontal_min[b], j);
          horizontal_max[b] = max(horizontal_max[b], j);
        }
      }
    }
    bool f = true, q = false;
    int count = 26;
    for (int b = 25; b >= 0; b--) {
      if (vertical_max[b] == -INF) {
        if (!q) {
          count--;
          continue;
        } else {
          vertical_min[b] = vertical_min[b + 1];
          vertical_max[b] = vertical_max[b + 1];
          horizontal_min[b] = horizontal_min[b + 1];
          horizontal_max[b] = horizontal_max[b + 1];
          continue;
        }
      }
      q = true;
      if (vertical_max[b] == vertical_min[b]) {
        for (int j = horizontal_min[b]; j <= horizontal_max[b]; j++) {
          if (board[vertical_max[b]][j] == 'a' + b ||
              (q && board[vertical_max[b]][j] == '*')) {
            board[vertical_max[b]][j] = '*';
          } else {
            f = false;
            break;
          }
        }
      } else if (horizontal_max[b] == horizontal_min[b]) {
        for (int i = vertical_min[b]; i <= vertical_max[b]; i++) {
          if (board[i][horizontal_max[b]] == 'a' + b ||
              (q && board[i][horizontal_max[b]] == '*')) {
            board[i][horizontal_max[b]] = '*';
          } else {
            f = false;
            break;
          }
        }
      } else {
        f = false;
      }
      if (!f) {
        break;
      }
    }
    if (f) {
      puts("YES");
      printf("%d\n", count);
      for (int i = 0; i < count; i++) {
        printf("%d %d %d %d\n", vertical_min[i] + 1, horizontal_min[i] + 1,
               vertical_max[i] + 1, horizontal_max[i] + 1);
      }
    } else {
      puts("NO");
    }
  }
  return 0;
}
