#include<bits/stdc++.h>
using namespace std;
char arr[1007][1007];
bool visited[1007][1007];
vector<pair<int,int>> dir={{-1,0},{1,0},{0,-1},{0,1}};
signed main(){
ios_base::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr);
int n,m; cin >> n >> m;
for(int i=1;i<=n;++i) for(int j=1;j<=m;++j) cin >> arr[i][j];
deque<pair<int,pair<int,int>>> q;
q.push_back({1,{1,1}});
visited[1][1]=true;
int ans=0;
while(!q.empty()){
int dis=q.front().first;
int x=q.front().second.first;
int y=q.front().second.second;
ans=max(ans,dis);
q.pop_front();
for(auto d:dir){
int tx=x+d.first;
int ty=y+d.second;
if(tx>n || tx<1 || ty>m || ty<1) continue;
if(arr[tx][ty]=='.' || visited[tx][ty]) continue;
visited[tx][ty]=true;
if(arr[tx][ty]==arr[x][y]){
q.push_front({dis,{tx,ty}});
}
else{
q.push_back({dis+1,{tx,ty}});
}
}
}
cout << ans;
}