#include <bits/stdc++.h>
using namespace std;
#define pii pair<int,int>
vector<vector<char>> v;
int dx[] = {0,-1,1,0},dy[] = {-1,0,0,1};int n,m;
deque<pii> dq;
vector<vector<int>> g;
bool chc(int x,int y){
if(x>=0&&x<n&&y>=0&&y<m&&v[x][y] != '.')return 1;
return 0;
}
int main(){
ios_base::sync_with_stdio(false);cin.tie(NULL);
cin>>n>>m;
v.resize(n+1,vector<char>(m+1));
for(int i=0;i<n;i++)for(int j=0;j<m;j++)cin>>v[i][j];
dq.push_front({0,0});
int ans = 0;
g.resize(n,vector<int>(m,0));
g[0][0] = 1;
while(!dq.empty()){
pii e =dq.front();dq.pop_front();
ans = max(ans,g[e.first][e.second]);
for(int i=0;i<4;i++){
int cr = e.first + dx[i];
int cc = e.second + dy[i];
if(chc(cr,cc)&&g[cr][cc] == 0){
if(v[cr][cc]==v[e.first][e.second]){
g[cr][cc] = g[e.first][e.second];
dq.push_front({cr,cc});
}
else{
g[cr][cc] = g[e.first][e.second]+1;
dq.push_back({cr,cc});
}
}
}
}
cout << ans;
}