#include <bits/stdc++.h>
using namespace std;
const int N = 111111;
char a[55][55];
int n, m;
int vis[54][65];
int q[4] = {0, 0, 1, -1}, w[4] = {1, -1, 0, 0};
bool ok(int x, int y) {
  if (x >= 0 && x < n && y >= 0 && y < m) return true;
  return false;
}
bool dfs(int x, int y, int x1, int y1, char now) {
  int i;
  for (i = 0; i < 4; i++) {
    int xx = x + q[i];
    int yy = y + w[i];
    if (xx != x1 || yy != y1)
      if (ok(xx, yy) && a[xx][yy] == now) {
        if (vis[xx][yy] == 0) {
          vis[xx][yy] = 1;
          if (dfs(xx, yy, x, y, now)) return true;
        } else {
          return true;
        }
      }
  }
  return false;
}
int main() {
  while (scanf("%d %d", &n, &m) != EOF) {
    int i, j;
    for (i = 0; i < n; i++) {
      scanf("%s", a[i]);
    }
    for (i = 0; i < n; i++) {
      for (j = 0; j < m; j++) {
        if (vis[i][j] == 0) {
          if (dfs(i, j, -1, -1, a[i][j])) {
            printf("Yes\n");
            return 0;
          }
        }
      }
    }
    printf("No\n");
  }
  return 0;
}
