#include <bits/stdc++.h>
int n, m, i, j, d[51][51], dx[4] = {0, 1, 0, -1}, dy[4] = {1, 0, -1, 0};
char a[60][60];
int dfs(int x, int y) {
  d[x][y] = 1;
  int s = 0;
  for (int i = 0; i < 4; i++) {
    int nx = x + dx[i], ny = y + dy[i];
    if (nx < n && nx >= 0 && ny < m && ny >= 0) {
      if (a[nx][ny] == a[x][y] && d[nx][ny] == 1) {
        s++;
      }
    }
  }
  if (s == 2)
    return 1;
  else {
    for (int i = 0; i < 4; i++) {
      int nx = x + dx[i], ny = y + dy[i];
      if (nx < n && nx >= 0 && ny < m && ny >= 0) {
        if (a[nx][ny] == a[x][y] && d[nx][ny] == 0)
          if (dfs(nx, ny)) return 1;
      }
    }
  }
  return 0;
}
int main() {
  scanf("%d%d", &n, &m);
  for (i = 0; i < n; i++) {
    scanf("%s", a[i]);
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < m; j++) {
      if (d[i][j] == 0)
        if (dfs(i, j) == 1) {
          printf("Yes");
          return 0;
        }
    }
  }
  printf("No");
}
