#include <bits/stdc++.h>
using namespace std;

int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    int n,m;
    cin >> n >> m;
    char matrica[n][m];
    int udaljenostiv[n][m];
    int udaljenostis[n][m];
    queue<pair<int,int>>pozv;
    queue<pair<int,int>>pozs;
    queue<int>dv;
    queue<int>ds;
    for ( int i = 0 ; i < n ; i++)
        for ( int j = 0 ; j < m ; j++)
        {
            udaljenostis[i][j] = -2;
            udaljenostiv[i][j] = -2;
            cin >> matrica[i][j];
            if ( matrica[i][j] == 'S')
            {
                pozs.push(make_pair(i,j));
                ds.push(0);
                udaljenostis[i][j] = 0;
            }
            else if ( matrica[i][j] == 'X')
            {
                pozv.push(make_pair(i,j));
                dv.push(0);
                udaljenostiv[i][j] = 0;
            }
            if ( matrica[i][j] == '*')
            {
                udaljenostis[i][j] = -1;
                udaljenostiv[i][j] = -1;
            }
        }

    while(!pozv.empty())
    {
        int v = pozv.front().first, k = pozv.front().second;
        pozv.pop();
        int pravac[4][2] = {{-1, 0}, {1, 0}, {0, -1}, {0, 1}};
        for ( int i = 0 ; i < 4 ; i++)
        {
            int v1 = v+pravac[i][0];
            int k1 = k+pravac[i][1];
            if ( v1 >= 0 && v1 < n && k1 >= 0 && k1 < m && udaljenostiv[v1][k1] == -2)
            {
                pozv.push(make_pair(v1,k1));
                udaljenostiv[v1][k1] = dv.front()+1;
                dv.push(dv.front()+1);
            }
        }
        dv.pop();
    }

    while(!pozs.empty())
    {
        int v = pozs.front().first, k = pozs.front().second;
        pozs.pop();
        int pravac[4][2] = {{-1, 0}, {1, 0}, {0, -1}, {0, 1}};
        for ( int i = 0 ; i < 4 ; i++)
        {
            int v1 = v+pravac[i][0];
            int k1 = k+pravac[i][1];
            if ( v1 >= 0 && v1 < n && k1 >= 0 && k1 < m && udaljenostis[v1][k1] == -2)
            {
                pozs.push(make_pair(v1,k1));
                udaljenostis[v1][k1] = ds.front()+1;
                ds.push(ds.front()+1);
            }
        }
        ds.pop();
    }
    int br  = 0;
    for ( int i = 0 ; i < n ; i++)
        for ( int j = 0 ; j < m ;j++)
            if ( udaljenostis[i][j] != -1)
                if ( udaljenostiv[i][j] > udaljenostis[i][j] && udaljenostis[i][j] != -2) br++;
    cout << br;
	return 0;
}