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

int main()
{
    int n, m,izlaz=1;
    cin >> n >> m;
    vector<vector<char>> mat(n, vector<char>(m));
    vector<pair<int,int>> vatre;
    vector<pair<int,int>> steve;

    for(int i =0;i<n;i++)
    {
        string red;
        cin >> red;
        for(int j =0;j<m;j++)
        {
            char polje = red[j];

            mat[i][j]=polje;

            if(polje == 'X')
                vatre.push_back({i,j});
            else if(polje == 'S')
                steve.push_back({i,j});
        }

    }


    while(!steve.empty())// okrece ovo dok nema vise novih steva ili vatri
    {



        vector<pair<int,int>>vatrep;
        while(!vatre.empty())
        {
            int i = vatre.back().first, j = vatre.back().second;
            int y[4]=   {i-1, i+1, i, i};
            int x[4]=  {j,j,j-1,j+1};
            vatre.pop_back();// sklanjam nepotreban element

            for(int g=0;g<4;g++)
                if(y[g] >= 0 && y[g] < n && x[g] >= 0 && x[g] < m)// ako je uokviru mat
                    if(mat[y[g]][x[g]] == '.')// ako nije zid ili steva, to moze jer gledamo odakle on polece
                        {
                            vatrep.push_back({ y[g] , x[g] });// nove vatre
                            mat[y[g]][x[g]] = 'X';
                        }
        }
        vatre = vatrep;// nove vatre



        vector<pair<int,int>>stevep;
        while(!steve.empty())
        {
            int i = steve.back().first, j = steve.back().second;
            int y[4]=   {i-1, i+1, i, i};
            int x[4]=  {j,j,j-1,j+1};
            steve.pop_back();// sklanjam nepotreban element

            for(int g=0;g<4;g++)
                if(y[g] >= 0 && y[g] < n && x[g] >= 0 && x[g] < m)// ako je uokviru mat
                    if(mat[y[g]][x[g]] == '.')// ako nije zid ili vatra
                        {
                            stevep.push_back({ y[g] , x[g] });// nove steve
                            mat[y[g]][x[g]] = 'S';
                            izlaz++;
                        }
        }
        steve = stevep;





    }
    
    cout << izlaz << "\n";
    return 0;
}