#include <iostream>
using namespace std;
const int N = 55;
char a[N][N];
int main() {
ios::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 >> a[i][j];
}
}
int res = -1e9;
for (int i = 1; i <= n; i ++) {
for (int j = 1; j <= m; j ++) {
if (a[i][j] != '+') continue;
int max_x = min(min(i, n - i), min(j, m - j)) - 1;
int y = -1e9;
for (int x = 1; x <= max_x; x ++) {
bool flag = true;
for (int I = i - x; I <= i - 1; I ++) {
if (a[I][j] != '|') {
flag = false;
break;
}
}
if (!flag) break;
for (int I = i + 1; I <= i + x; I ++) {
if (a[I][j] != '|') {
flag = false;
break;
}
}
if (!flag) break;
for (int J = j - x; J <= j - 1; J ++) {
if (a[i][J] != '-') {
flag = false;
break;
}
}
if (!flag) break;
for (int J = j + 1; J <= j + x; J++) {
if (a[i][J] != '-') {
flag = false;
break;
}
}
if (!flag) break;
for (int I = i - x, J = j - x; I <= i + x && J <= j + x; I ++, J ++) {
if (a[I][J] == '\\' || (i == I && j == J)) {
} else {
flag = false;
break;
}
}
if (!flag) break;
for (int I = i - x, J = j + x; I <= i + x && J >= j - x; I ++, J --) {
if (a[I][J] == '/' || (i == I && j == J)) {
} else {
flag = false;
break;
}
}
if (!flag) break;
else y = max(x, y);
}
res = max(res, y);
}
}
if (res > -1e9) cout << res << endl;
else cout << 0 << endl;
return 0;
}