#include <iostream>
#include<vector>
using namespace std;

int Prebroj(vector<vector<char>>& a, int n,int m){
    int brojac = 0;
    for(int i = 0;i<n;i++)
    {
        for(int j = 0;j<m;j++)
        {
            if(a[i][j]=='S')
            brojac++;
        }}
        return brojac;
}

bool ImamLiGde(vector<vector<char>>& a, int n, int m)
{
    int Ipre,Iposle,Jpre,Jposle;
    for(int i = 0;i<n;i++)
    {
        for(int j = 0;j<m;j++)
        {
            if(a[i][j]=='S')
        {if(i==0){
            Ipre = 0;
            Iposle = 1;}
            else if(i == n-1){
            Iposle = n-1;
            Ipre = n-2;}
            else{
            Ipre = i-1;
            Iposle = i+1;}

            if(j==0){
            Jpre = 0;
            Jposle = 1;}
            else if(j == m-1){
            Jposle = m-1;
            Jpre = m-2;}
            else{
            Jpre = j-1;
            Jposle = j+1;}
            if(a[Ipre][j] == '.' || a[i][Jpre] == '.' || a[Iposle][j] == '.' || a[i][Jposle] == '.')
                return true;//ima gde da ide tj nije kraj}
        }
    }}
    return false;//kraj je
}
int main()
{
    int n,m, brojZidova, brojVatre = 0,Ipre,Iposle,Jpre,Jposle;
    cin >> n >> m;
    bool provera = true;
    vector<vector<char>> lavirint(n, vector<char>(m));
    vector<vector<char>> a(n, vector<char>(m));

    //char **b = new char*[n];
    for (int i = 0; i < n; i++) {
        for(int j = 0;j<m;j++){
            cin>>lavirint[i][j];
            a[i][j] = lavirint[i][j];
            if(lavirint[i][j]=='*')
            brojZidova ++;
            if(lavirint[i][j]=='X')
            brojVatre ++;
        } 
    }
    
    if(brojVatre == 0)
    cout<<n*m-brojZidova;
    else{
        while(provera){//GLAVNI DEO KODA
            //sirenje vatre
    for(int i = 0;i<n;i++)
    {
        for(int j = 0;j<m;j++)
        {
            if(lavirint[i][j]=='X')
            {
            {if(i==0){
            Ipre = 0;
            Iposle = 1;}
            else if(i == n-1){
            Iposle = n-1;
            Ipre = n-2;}
            else{
            Ipre = i-1;
            Iposle = i+1;}

            if(j==0){
            Jpre = 0;
            Jposle = 1;}
            else if(j == m-1){
            Jposle = m-1;
            Jpre = m-2;}
            else{
            Jpre = j-1;
            Jposle = j+1;}
            if(lavirint[Ipre][j] == '.')
            a[Ipre][j] = 'X';
            else if(lavirint[i][Jpre] == '.')
            a[i][Jpre] = 'X';
            else if (lavirint[Iposle][j] == '.')
            a[Iposle][j] = 'X';
            else if(lavirint[i][Jposle] == '.')
            a[i][Jposle] = 'X';
            }

        }}}
for(int i = 0;i<n;i++)
        {
            for (int j = 0;j<m;j++){
                lavirint[i][j] = a[i][j];
            }
        }

for(int i = 0;i<n;i++)//pomeranje s
    {
        for(int j = 0;j<m;j++)
        {
            if(lavirint[i][j]=='S')
            {
            {if(i==0){
            Ipre = 0;
            Iposle = 1;}
            else if(i == n-1){
            Iposle = n-1;
            Ipre = n-2;}
            else{
            Ipre = i-1;
            Iposle = i+1;}

            if(j==0){
            Jpre = 0;
            Jposle = 1;}
            else if(j == m-1){
            Jposle = m-1;
            Jpre = m-2;}
            else{
            Jpre = j-1;
            Jposle = j+1;}
            if(lavirint[Ipre][j] == '.')
            a[Ipre][j] = 'S';
            else if(lavirint[i][Jpre] == '.')
            a[i][Jpre] = 'S';
            else if (lavirint[Iposle][j] == '.')
            a[Iposle][j] = 'S';
            else if(lavirint[i][Jposle] == '.')
            a[i][Jposle] = 'S';


            }




        }}

    }

for(int i = 0;i<n;i++)
        {
            for (int j = 0;j<m;j++){
                lavirint[i][j] = a[i][j];
            }
        }

        provera = ImamLiGde(lavirint,n,m);
        }
        cout<<Prebroj(lavirint,n,m);
    }

    return 0;
}