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

int n, m;
char mat[1005][1005];
bool vis[1005][1005];
int dis1[1005][1005];
int dis2[1005][1005];


queue < pair < int , pair < int , int > > > bfs;


void f1()
{
    for(int i = 0; i < n; i++)
    {
        for(int j = 0; j < m; j++)
        {
            dis1[i][j] = 1e9 + 2;
            dis2[i][j] = 1e9 + 2;
        }
    }
}

vector < int > v1 = {-1, 0, 1, 0};
vector < int > v2 = {0, 1, 0, -1};


void f(bool b)
{
    while(!bfs.empty())
    {
        int i = bfs.front().second.first;
        int j = bfs.front().second.second;
        int dis = bfs.front().first;

        bfs.pop();

        if(mat[i][j] == '*') continue;
        if(vis[i][j]) continue;

        vis[i][j] = true;
        if(b) dis1[i][j] = dis;
        else dis2[i][j] = dis;

        for(int k = 0; k < 4; k++)
        {
            if(i + v1[k] > -1 && i + v1[k] < n &&  j + v2[k] > -1 && j + v2[k] < m)
            {
                bfs.push( {dis + 1 , { i + v1[k] , j + v2[k] } } );
            }
        }

    }
}

int main()
{
    ios_base::sync_with_stdio(0);
    cin.tie(0); cout.tie(0);

    cin >> n >> m;

    f1();


    for(int i = 0; i < n; i++)
    {
        for(int j = 0; j < m; j++)
        {
            cin >> mat[i][j];
        }
    }

    for(int i = 0; i < n; i++)
    {
        for(int j = 0; j < m; j++)
        {
            if(mat[i][j] == 'S')
            {
                bfs.push({ 0, {i , j} });
                break;
            }
        }
    }
    f(true);

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



    for(int i = 0; i < n; i++)
    {
        for(int j = 0; j < m; j++)
        {
            if(mat[i][j] == 'X')
            {
                bfs.push({ 0 , {i , j} });
            }
        }
    }

    f(false);

    int cnt = 0;

    for(int i = 0; i < n; i++)
    {
        for(int j = 0; j < m; j++)
        {
            if(mat[i][j] == '*') continue;

            if(dis1[i][j] < dis2[i][j])
            {
                cnt++;
                mat[i][j] = 'S';
            }
            else
            {
                mat[i][j] = 'X';
            }
        }
    }

    cout << cnt << "\n";


    return 0;
}