#include <bits/stdc++.h>
using namespace std;
long long read() {
  long long x = 0, f = 0;
  char ch = getchar();
  while (!isdigit(ch)) f |= ch == '-', ch = getchar();
  while (isdigit(ch)) x = (x << 1) + (x << 3) + (ch ^ 48), ch = getchar();
  return f ? -x : x;
}
const int N = 2005, M = N * N;
int fa[N];
void ufs_init(int n) {
  for (int i = 1; i <= n; i++) fa[i] = i;
}
int getf(int x) { return fa[x] == x ? x : fa[x] = getf(fa[x]); }
void Merge(int a, int b) { fa[getf(a)] = getf(b); }
int n, m, c, cnt = 0;
int id[N];
vector<int> e[N];
char s[N][N];
int dfn[N], Time = 0, inst[N];
int Tarjan(int x) {
  dfn[x] = ++Time, inst[x] = 1;
  for (auto y : e[x])
    if (!dfn[y]) {
      if (!Tarjan(y)) return 0;
    } else if (inst[y])
      if (dfn[y] < dfn[x]) return 0;
  inst[x] = 0;
  return 1;
}
int in[N];
int q[N], head = 0, tail = 0;
int val[N];
int main() {
  n = read(), m = read(), c = n + m;
  ufs_init(c);
  for (int i = 1; i <= n; i++) {
    scanf("%s", s[i] + 1);
    for (int j = 1; j <= m; j++)
      if (s[i][j] == '=') Merge(i, j + n);
  }
  for (int i = 1; i <= c; i++)
    if (fa[i] == i) id[i] = ++cnt;
  for (int i = 1; i <= n; i++)
    for (int j = 1; j <= m; j++) {
      if (getf(i) == getf(j + n) && s[i][j] != '=') return puts("No"), 0;
      if (s[i][j] == '<')
        e[id[getf(i)]].push_back(id[getf(j + n)]);
      else if (s[i][j] == '>')
        e[id[getf(j + n)]].push_back(id[getf(i)]);
    }
  for (int i = 1; i <= cnt; i++)
    if (!dfn[i])
      if (!Tarjan(i)) return puts("No"), 0;
  memset(in, 0, sizeof(in)), memset(val, 0, sizeof(val));
  for (int x = 1; x <= cnt; x++)
    for (auto y : e[x]) in[y]++;
  for (int i = 1; i <= cnt; i++)
    if (!in[i]) q[++tail] = i;
  while (head != tail) {
    int x = q[++head];
    val[x]++;
    for (auto y : e[x]) {
      val[y] = max(val[y], val[x]);
      if (!--in[y]) q[++tail] = y;
    }
  }
  puts("Yes");
  for (int i = 1; i <= n; i++) printf("%d ", val[id[getf(i)]]);
  puts("");
  for (int i = 1; i <= m; i++) printf("%d ", val[id[getf(i + n)]]);
  return 0;
}
