//problem 2
#include <bits/stdc++.h>
using namespace std;
int n, m, cnt = 0;
char grid[1005][1005];
int vis[1005][1005];
vector<int> rooms;
vector<pair<int, int>> b = {{1, 0}, {-1, 0}, {0, 1}, {0, -1}};
bool valid(int i, int j) {
return !(i < 0 || i >= n || j < 0 || j >= m || grid[i][j] == '-');
}
void dfs(int si, int sj) {
vis[si][sj] = true;
cnt++;
for (int i = 0; i < 4; i++) {
int ci = si + b[i].first;
int cj = sj + b[i].second;
if (valid(ci, cj) && !vis[ci][cj]) {
dfs(ci, cj);
}
}
}
int main() {
cin >> n >> m;
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
cin >> grid[i][j];
}
}
memset(vis, false, sizeof(vis));
bool flag = false;
int mn = INT_MAX;
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
if (!vis[i][j] && grid[i][j] == '.') {
cnt = 0;
dfs(i, j);
mn = min(cnt, mn);
flag = true;
}
}
}
flag ? cout << mn << endl : cout << "-1" << endl;;
return 0;
}
Ly9wcm9ibGVtIDIKCiNpbmNsdWRlIDxiaXRzL3N0ZGMrKy5oPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwppbnQgbiwgbSwgY250ID0gMDsKY2hhciBncmlkWzEwMDVdWzEwMDVdOwppbnQgdmlzWzEwMDVdWzEwMDVdOwp2ZWN0b3I8aW50PiByb29tczsKCnZlY3RvcjxwYWlyPGludCwgaW50Pj4gYiA9IHt7MSwgMH0sIHstMSwgMH0sIHswLCAxfSwgezAsIC0xfX07Cgpib29sIHZhbGlkKGludCBpLCBpbnQgaikgewogICAgcmV0dXJuICEoaSA8IDAgfHwgaSA+PSBuIHx8IGogPCAwIHx8IGogPj0gbSB8fCBncmlkW2ldW2pdID09ICctJyk7Cn0KCnZvaWQgZGZzKGludCBzaSwgaW50IHNqKSB7CiAgICB2aXNbc2ldW3NqXSA9IHRydWU7CiAgICBjbnQrKzsKCiAgICBmb3IgKGludCBpID0gMDsgaSA8IDQ7IGkrKykgewogICAgICAgIGludCBjaSA9IHNpICsgYltpXS5maXJzdDsKICAgICAgICBpbnQgY2ogPSBzaiArIGJbaV0uc2Vjb25kOwoKICAgICAgICBpZiAodmFsaWQoY2ksIGNqKSAmJiAhdmlzW2NpXVtjal0pIHsKICAgICAgICAgICAgZGZzKGNpLCBjaik7CiAgICAgICAgfQogICAgfQp9CgppbnQgbWFpbigpIHsKICAgIGNpbiA+PiBuID4+IG07CgogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspIHsKICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IG07IGorKykgewogICAgICAgICAgICBjaW4gPj4gZ3JpZFtpXVtqXTsKICAgICAgICB9CiAgICB9CgogICAgbWVtc2V0KHZpcywgZmFsc2UsIHNpemVvZih2aXMpKTsKICAgIGJvb2wgZmxhZyA9IGZhbHNlOwogICAgaW50IG1uID0gSU5UX01BWDsKCiAgICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykgewogICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgbTsgaisrKSB7CiAgICAgICAgICAgIGlmICghdmlzW2ldW2pdICYmIGdyaWRbaV1bal0gPT0gJy4nKSB7CiAgICAgICAgICAgICAgICBjbnQgPSAwOwogICAgICAgICAgICAgICAgZGZzKGksIGopOwogICAgICAgICAgICAgICAgbW4gPSBtaW4oY250LCBtbik7CiAgICAgICAgICAgICAgICBmbGFnID0gdHJ1ZTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBmbGFnID8gY291dCA8PCBtbiA8PCBlbmRsIDogY291dCA8PCAiLTEiIDw8IGVuZGw7OwoKICAgIHJldHVybiAwOwp9Cg==