#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int main()
{
int n,m,sum = 0;
cin>>n>>m;
char arr[n][m];
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
cin>>arr[i][j];
}
}
int cont[n][m],can_open_based = 0;
memset(cont,0,sizeof(cont));
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
if(arr[i][j] == '#') continue;
if(i == 0 && j == 0)
{
if(arr[i][j+1] == '.' && arr[i+1][j] == '.') can_open_based++;
}
else if(i != 0 && i != n - 1 && j != 0 && j != m - 1)
{
if(arr[i+1][j] == '.' && arr[i][j+1] == '.' && arr[i-1][j] == '.' && arr[i][j-1] == '.') can_open_based++;
}
else if(i == 0 && j == m - 1)
{
if(arr[i+1][j] == '.' && arr[i][j-1] == '.') can_open_based++;
}
else if(i == n - 1 && j == 0)
{
if(arr[i][j+1] == '.' && arr[i-1][j] == '.') can_open_based++;
}
else if(i == n - 1 && j == m - 1)
{
if(arr[i-1][j] == '.' && arr[i][j-1] == '.') can_open_based++;
}
else if(i == 0 && j != 0 && j != m - 1)
{
if(arr[i][j+1] == '.' && arr[i+1][j] == '.' && arr[i][j-1] == '.') can_open_based++;
}
else if(i == n - 1 && j != 0 && j != m - 1)
{
if(arr[i][j+1] == '.' && arr[i-1][j] == '.' && arr[i][j-1] == '.') can_open_based++;
}
else if(j == 0 && i != n - 1 && i != 0)
{
if(arr[i-1][j] == '.' && arr[i+1][j] == '.' && arr[i][j+1] == '.') can_open_based++;
}
else if(j == m - 1 && i != 0 && i != n - 1)
{
if(arr[i-1][j] == '.' && arr[i+1][j] == '.' && arr[i][j+1] == '.') can_open_based++;
}
}
}
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
if(arr[i][j] == '#')
{
if(i > 0 && i < n - 1 && j > 0 && j < m - 1) cont[i][j] = 4 + 1;
else if((i == 0 || i == n - 1) && (j == 0 || j == m - 1)) cont[i][j] = 2 + 1;
else cont[i][j] = 3 + 1;
}
}
}
int maxn = cont[0][0];
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
if(cont[i][j] > maxn) maxn = cont[i][j];
}
}
cout<<can_open_based + maxn;
return 0;
}