#include<bits/stdc++.h>
using namespace std;
int n,m,ans;char a[55][55];
bool checkleft(int x,int y,int dx){
for(int i=1;i<=dx;i++){
if(a[x][y-i]!='-')return 0;
}
return 1;
}
bool checkright(int x,int y,int dx){
for(int i=1;i<=dx;i++){
if(a[x][y+i]!='-')return 0;
}
return 1;
}
bool checkup(int x,int y,int dx){
for(int i=1;i<=dx;i++){
if(a[x-i][y]!='|')return 0;
}
return 1;
}
bool checkdown(int x,int y,int dx){
for(int i=1;i<=dx;i++){
if(a[x+i][y]!='|')return 0;
}
return 1;
}
bool checkleftup(int x,int y,int dx){
x--;y--;
for(int i=1;i<=dx;i++){
if(a[x][y]!='\\')return 0;
x--;y--;
}
return 1;
}
bool checkrightup(int x,int y,int dx){
x--;y++;
for(int i=1;i<=dx;i++){
if(a[x][y]!='/')return 0;
x--;y++;
}
return 1;
}
bool checkleftdown(int x,int y,int dx){
x++;y--;
for(int i=1;i<=dx;i++){
if(a[x][y]!='/')return 0;
x++;y--;
}
return 1;
}
bool checkrightdown(int x,int y,int dx){
x++;y++;
for(int i=1;i<=dx;i++){
if(a[x][y]!='\\')return 0;
x++;y++;
}
}
bool check90(int x,int y,int dx){
if(checkleft(x,y,dx)&&checkright(x,y,dx)&&checkup(x,y,dx)&&checkdown(x,y,dx))return 1;
return 0;
}
bool check45(int x,int y,int dx){
if(checkleftup(x,y,dx)&&checkrightup(x,y,dx)&&checkleftdown(x,y,dx)&&checkrightdown(x,y,dx))return 1;
return 0;
}
int check(int x,int y){
for(int dx=min(n,m);dx>=0;dx--){
if(x-dx<1||x+dx>n||y-dx<1||y+dx>m)continue;
if(check90(x,y,dx)&&check45(x,y,dx))return dx;
}
}
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
cin>>a[i][j];
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
if(a[i][j]=='+')ans=max(ans,check(i,j));
cout<<ans;
return 0;
}