#include<bits/stdc++.h>
#define x first
#define y second
using namespace std;
typedef pair<int,int> PII;
int dist[100][100];
PII last[100][100];
int n,m,mm;
char g[100][100];
inline bool bfs(int sx,int sy){
queue<pair<int,int>> q;
q.push({sx,sy});
mm++;
dist[sx][sy]=mm;
while(q.size()){
auto t = q.front(); q.pop();
int dx[4]={-1,0,1,0},dy[4]={0,1,0,-1};
for(int i=0;i<4;i++){
int x=dx[i]+t.x,y=dy[i]+t.y;
if(!dist[x][y]&&g[x][y]==g[t.x][t.y]){
dist[x][y]=mm;
last[x][y]={t.x,t.y};
q.push({x,y});
}else if(dist[x][y]==dist[t.x][t.y]&&last[t.x][t.y].x!=x&&last[t.x][t.y].y!=y)
return true;
}
}
return false;
}
int main(){
cin>>n>>m;
bool stt=false;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
cin>>g[i][j];
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
if(!dist[i][j])
if(bfs(i,j))
stt=true;
if(stt) puts("Yes");
else puts("No");
}