/*
"""Bismillahir Rahmanur Rahim"""
*/
#include<bits/stdc++.h>
using namespace std;
#define pi 2*acos(0.0)
#define ll long long int
#define pb push_back
#define pf push_front
const ll sz = 1000001;
#define mp make_pair
#define ses '\n'
#define stm istringstream
#define gcd __gcd
ll lcm(ll x,ll y){return (x*y)/gcd(x,y);}
#define tin ll T;cin>>T; for(ll o=1;o<=T;o++)
#define tout cout<<"Case "<<o<<": ";
ll dr[]={-1,0,1,0};
ll dc[]={0,1,0,-1};
ll valid(ll r,ll c,ll x,ll y)
{
if(r>=0 && r<x && c>=0 && c<y)
return 1;
else return 0;
}
ll ar[480][480];
ll dis[480][480],vis[480][480];
ll mz,u,v;
void bfs(ll a,ll b,ll x,ll y)
{
queue<pair<ll,ll> >q;
q.push({a,b});
vis[a][b]=1;
dis[a][b]=0;
mz=0;
while(!q.empty())
{
ll p,k;
p=q.front().first;
k=q.front().second;
q.pop();
for(int i=0;i<4;i++)
{
ll r=p+dr[i];
ll c=k+dc[i];
if(valid(r,c,x,y))
{
if(vis[r][c]==0)
{
if(ar[r][c]==1)
{
vis[r][c]=1;
dis[r][c]=dis[p][k]+1;
if(mz<dis[r][c])
mz=dis[r][c],u=r,v=c;
q.push({r,c});
}
}
}
}
}
}
int main()
{
//freopen ("input.txt","r",stdin);
// freopen ("output.txt","w",stdout);
{
ll x,y,a,b;
scanf("%lld %lld",&x,&y);
char c;
for(int i=0;i<y;i++)
for(int j=0;j<x;j++)
{
cin>>c;
if(c=='.')
ar[i][j]=1,a=i,b=j;
else ar[i][j]=2;
}
bfs(a,b,y,x);
mz=0;
for(int i=0;i<y;i++)
{
for(int j=0;j<x;j++)
vis[i][j]=0,dis[i][j]=0;
}
bfs(u,v,y,x);
//cout<<mz<<" "<<u<<" "<<v<<ses;
printf("%lld\n",mz);
}
return 0;
}
/* --------------------
| ~SOHAN~ |
| ~Chandler68~ |
--------------------
|| VALAR MORGULIS||==|| ALL MEN MUST DIE ||
\\ Power Is Power//
|| I Can Do This All day ||
// We are on a Break \\ // How you doin'? \\
|| Say My Name || ~~ || I Am The Who Knocks ||
// I Am Ted Mosby Architect \\
|| It Is Legen --wait for it -- dary ,Legendary ||
\\ Penny - Penny - Penny // -- Bazinga
*/
LyoKCgogICAgICAgICAgICAgICAgICIiIkJpc21pbGxhaGlyIFJhaG1hbnVyIFJhaGltIiIiCgoqLwojaW5jbHVkZTxiaXRzL3N0ZGMrKy5oPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwojZGVmaW5lIHBpIDIqYWNvcygwLjApCiNkZWZpbmUgbGwgbG9uZyBsb25nIGludAojZGVmaW5lIHBiIHB1c2hfYmFjawojZGVmaW5lIHBmIHB1c2hfZnJvbnQKY29uc3QgbGwgc3ogPSAxMDAwMDAxOwojZGVmaW5lIG1wIG1ha2VfcGFpcgojZGVmaW5lIHNlcyAnXG4nCiNkZWZpbmUgc3RtIGlzdHJpbmdzdHJlYW0KI2RlZmluZSBnY2QgX19nY2QKbGwgbGNtKGxsIHgsbGwgeSl7cmV0dXJuICh4KnkpL2djZCh4LHkpO30KI2RlZmluZSB0aW4gbGwgVDtjaW4+PlQ7IGZvcihsbCBvPTE7bzw9VDtvKyspCiNkZWZpbmUgdG91dCBjb3V0PDwiQ2FzZSAiPDxvPDwiOiAiOwpsbCBkcltdPXstMSwwLDEsMH07CmxsIGRjW109ezAsMSwwLC0xfTsKbGwgdmFsaWQobGwgcixsbCBjLGxsIHgsbGwgeSkKewogICAgaWYocj49MCAmJiByPHggJiYgYz49MCAmJiBjPHkpCiAgICAgICAgcmV0dXJuIDE7CiAgICBlbHNlIHJldHVybiAwOwp9CmxsIGFyWzQ4MF1bNDgwXTsKbGwgZGlzWzQ4MF1bNDgwXSx2aXNbNDgwXVs0ODBdOwpsbCBteix1LHY7CnZvaWQgYmZzKGxsIGEsbGwgYixsbCB4LGxsIHkpCnsKICAgICBxdWV1ZTxwYWlyPGxsLGxsPiA+cTsKICAgICAgICBxLnB1c2goe2EsYn0pOwogICAgICAgIHZpc1thXVtiXT0xOwogICAgICAgIGRpc1thXVtiXT0wOwogICAgICAgIG16PTA7CiAgICAgICAgd2hpbGUoIXEuZW1wdHkoKSkKICAgICAgICAgIHsKICAgICAgICAgICAgIGxsIHAsazsKICAgICAgICAgICAgIHA9cS5mcm9udCgpLmZpcnN0OwogICAgICAgICAgICAgaz1xLmZyb250KCkuc2Vjb25kOwogICAgICAgICAgICAgcS5wb3AoKTsKICAgICAgICAgICAgIGZvcihpbnQgaT0wO2k8NDtpKyspCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgbGwgcj1wK2RyW2ldOwogICAgICAgICAgICAgICAgIGxsIGM9aytkY1tpXTsKCiAgICAgICAgICAgICAgICAgaWYodmFsaWQocixjLHgseSkpCiAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICBpZih2aXNbcl1bY109PTApCiAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGFyW3JdW2NdPT0xKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpc1tyXVtjXT0xOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc1tyXVtjXT1kaXNbcF1ba10rMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihtejxkaXNbcl1bY10pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG16PWRpc1tyXVtjXSx1PXIsdj1jOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcS5wdXNoKHtyLGN9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgIH0KfQoKaW50IG1haW4oKQp7CiAgICAvL2ZyZW9wZW4gKCJpbnB1dC50eHQiLCJyIixzdGRpbik7CiAgIC8vIGZyZW9wZW4gKCJvdXRwdXQudHh0IiwidyIsc3Rkb3V0KTsKCiAgICB7CiAgICAgICAgbGwgeCx5LGEsYjsKICAgICAgICBzY2FuZigiJWxsZCAlbGxkIiwmeCwmeSk7CiAgICAgICAgY2hhciBjOwoKICAgICAgICBmb3IoaW50IGk9MDtpPHk7aSsrKQogICAgICAgICAgICBmb3IoaW50IGo9MDtqPHg7aisrKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgIGNpbj4+YzsKICAgICAgICAgICAgICAgIGlmKGM9PScuJykKICAgICAgICAgICAgICAgICAgICBhcltpXVtqXT0xLGE9aSxiPWo7CiAgICAgICAgICAgICAgICAgICBlbHNlIGFyW2ldW2pdPTI7CiAgICAgICAgICAgIH0KICAgICAgICAgIGJmcyhhLGIseSx4KTsKICAgICAgICAgIG16PTA7CiAgICAgICAgICBmb3IoaW50IGk9MDtpPHk7aSsrKQogICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGZvcihpbnQgaj0wO2o8eDtqKyspCiAgICAgICAgICAgICAgICAgIHZpc1tpXVtqXT0wLGRpc1tpXVtqXT0wOwogICAgICAgICAgIH0KICAgICAgICAgICBiZnModSx2LHkseCk7CiAgICAgICAgICAgLy9jb3V0PDxtejw8IiAiPDx1PDwiICI8PHY8PHNlczsKCiAgICAgICAgICBwcmludGYoIiVsbGRcbiIsbXopOwoKCgoKICAgIH0KICAgIHJldHVybiAwOwp9Ci8qICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIHwgICAgICB+U09IQU5+ICAgICAgIHwKICAgIHwgICB+Q2hhbmRsZXI2OH4gICAgIHwKICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgfHwgVkFMQVIgTU9SR1VMSVN8fD09fHwgQUxMIE1FTiBNVVNUIERJRSB8fAogICAgXFwgUG93ZXIgSXMgUG93ZXIvLwogICAgfHwgSSBDYW4gRG8gVGhpcyBBbGwgZGF5IHx8CiAgICAvLyBXZSBhcmUgb24gYSBCcmVhayBcXCAvLyBIb3cgeW91IGRvaW4nPyBcXAogICAgfHwgU2F5IE15IE5hbWUgfHwgfn4gfHwgSSBBbSBUaGUgV2hvIEtub2NrcyB8fAogICAgLy8gSSBBbSBUZWQgTW9zYnkgQXJjaGl0ZWN0IFxcCiAgICB8fCBJdCBJcyBMZWdlbiAtLXdhaXQgZm9yIGl0IC0tIGRhcnkgLExlZ2VuZGFyeSB8fAogICAgXFwgUGVubnkgLSBQZW5ueSAtIFBlbm55IC8vIC0tIEJhemluZ2EKCiovCg==