#include <iostream>
using namespace std;
int check[2502][2502]={0};
int main ()
{
int R, S;
cin>>R>>S;
char HT[51][51]; //HT == Hoi truong :v
int STT[51][51];
int stt = 1;
for (int i=1; i<=R; i++)
for (int j=1; j<=S; j++)
{
cin>>HT[i][j];
STT[i][j] = stt;
stt++;
}
int x_xq[] = {-1, -1, +0, +1, +1, +1, +0, -1};
int y_xq[] = {+0, +1, +1, +1, +0, -1, -1, -1};
int gt_M = -1, i_M = 0, j_M = 0;
for (int i=1; i<=R; i++)
{
for (int j=1; j<=S; j++)
{
if (HT[i][j]=='.')
{
int d = 0;
for (int t=0; t<8; t++)
{
int x_m = x_xq[t]+j;
int y_m = y_xq[t]+i;
if (x_m>=1 && x_m<=S && y_m>=1 && y_m<=R && HT[y_m][x_m]=='o')
d++;
}
if (d>gt_M)
{
gt_M = d;
i_M = i;
j_M = j;
}
}
}
}
if (gt_M!=-1)
HT[i_M][j_M] = 'o';
int count = 0;
for (int i=1; i<=R; i++)
{
for (int j=1; j<=S; j++)
{
if (HT[i][j]=='o')
{
for (int t=0; t<8; t++)
{
int x_m = x_xq[t]+j;
int y_m = y_xq[t]+i;
if (x_m>=1 && x_m<=S && y_m>=1 && y_m<=R && HT[y_m][x_m]=='o')
{
if (check[STT[i][j]][STT[y_m][x_m]]==0)
{
count++;
check[STT[i][j]][STT[y_m][x_m]]=1;
check[STT[y_m][x_m]][STT[i][j]]=1;
}
}
}
}
}
}
cout<<count;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IGNoZWNrWzI1MDJdWzI1MDJdPXswfTsKCmludCBtYWluICgpCnsKICAgIGludCBSLCBTOwogICAgY2luPj5SPj5TOwogICAgY2hhciBIVFs1MV1bNTFdOyAgICAvL0hUID09IEhvaSB0cnVvbmcgOnYKICAgIGludCBTVFRbNTFdWzUxXTsKICAgIGludCBzdHQgPSAxOwogICAgZm9yIChpbnQgaT0xOyBpPD1SOyBpKyspCiAgICAgICAgZm9yIChpbnQgaj0xOyBqPD1TOyBqKyspCiAgICAgICAgewogICAgICAgICAgICBjaW4+PkhUW2ldW2pdOwogICAgICAgICAgICBTVFRbaV1bal0gPSBzdHQ7CiAgICAgICAgICAgIHN0dCsrOwogICAgICAgIH0KICAgICAgICAgICAgCiAgICBpbnQgeF94cVtdID0gey0xLCAtMSwgKzAsICsxLCArMSwgKzEsICswLCAtMX07CiAgICBpbnQgeV94cVtdID0geyswLCArMSwgKzEsICsxLCArMCwgLTEsIC0xLCAtMX07CiAgICAKICAgIGludCBndF9NID0gLTEsIGlfTSA9IDAsIGpfTSA9IDA7IAogICAgZm9yIChpbnQgaT0xOyBpPD1SOyBpKyspCiAgICB7CiAgICAgICAgZm9yIChpbnQgaj0xOyBqPD1TOyBqKyspCiAgICAgICAgewogICAgICAgICAgICBpZiAoSFRbaV1bal09PScuJykKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaW50IGQgPSAwOwogICAgICAgICAgICAgICAgZm9yIChpbnQgdD0wOyB0PDg7IHQrKykKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpbnQgeF9tID0geF94cVt0XStqOwogICAgICAgICAgICAgICAgICAgIGludCB5X20gPSB5X3hxW3RdK2k7CiAgICAgICAgICAgICAgICAgICAgaWYgKHhfbT49MSAmJiB4X208PVMgJiYgeV9tPj0xICYmIHlfbTw9UiAmJiBIVFt5X21dW3hfbV09PSdvJykKICAgICAgICAgICAgICAgICAgICAgICAgZCsrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKGQ+Z3RfTSkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBndF9NID0gZDsKICAgICAgICAgICAgICAgICAgICBpX00gPSBpOwogICAgICAgICAgICAgICAgICAgIGpfTSA9IGo7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICBpZiAoZ3RfTSE9LTEpCiAgICAgICAgSFRbaV9NXVtqX01dID0gJ28nOwogICAgICAgIAogICAgCiAgICBpbnQgY291bnQgPSAwOwogICAgZm9yIChpbnQgaT0xOyBpPD1SOyBpKyspCiAgICB7CiAgICAgICAgZm9yIChpbnQgaj0xOyBqPD1TOyBqKyspCiAgICAgICAgewogICAgICAgICAgICBpZiAoSFRbaV1bal09PSdvJykKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgZm9yIChpbnQgdD0wOyB0PDg7IHQrKykKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpbnQgeF9tID0geF94cVt0XStqOwogICAgICAgICAgICAgICAgICAgIGludCB5X20gPSB5X3hxW3RdK2k7CiAgICAgICAgICAgICAgICAgICAgaWYgKHhfbT49MSAmJiB4X208PVMgJiYgeV9tPj0xICYmIHlfbTw9UiAmJiBIVFt5X21dW3hfbV09PSdvJykKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjaGVja1tTVFRbaV1bal1dW1NUVFt5X21dW3hfbV1dPT0wKQogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudCsrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tbU1RUW2ldW2pdXVtTVFRbeV9tXVt4X21dXT0xOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tbU1RUW3lfbV1beF9tXV1bU1RUW2ldW2pdXT0xOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgY291dDw8Y291bnQ7CiAgICByZXR1cm4gMDsKfQ==