#include <iostream>
using namespace std;
int udaljenost1[721][721];
int udaljenost2[721][721];
char a[721][721];
void put(int n, int m, int x, int y, int udaljenost[721][721])
{
    int X[] = {-1, 1, 0, 0};
    int Y[] = {0, 0, -1, 1};
    int aa[721*721], p = 0, k = 0;
    aa[k] = x * m + y;
    k++;
    udaljenost[x][y] = 0;

    while (p < k) {
        int tr = aa[p];
        p++;
        int x = tr / m;
        int y = tr % m;
        for(int i = 0; i < 4; i++)
        {
            int x1 = x + X[i];
            int y1 = y + Y[i];
            if (x1 >= 0 && x1 < n && y1 >= 0 && y1 < m && udaljenost[x1][y1] == -1 && a[x1][y1] != '*')
            {
                udaljenost[x1][y1] = udaljenost[x][y] + 1;
                aa[k] = x1 * m + y1;
                k++;
            }
        }
    }
}

int main()
{
    int n, m;
    cin >> n >> m;
    int br = 0;
    int br1 = 0;
    int xs = 0;
    int ys = 0;
    int xv = 0;
    int yv = 0;
    int r = 0;
    for(int i = 0; i < n; i++)
    {
        for(int j = 0; j < m; j++)
        {
            cin >> a[i][j];
            if(a[i][j] == 'X')
                {
                    br++;
                    xv = i;
                    yv = j;
                }
            else if(a[i][j] == '*')
                br1++;
            else if(a[i][j] == 'S')
            {
                xs = i;
                ys = j;
            }
        }
    }
    if(br == 0)
    {
        cout << n * m - br1;
        exit(0);
    }
    for(int i = 0; i < n; i++)
    {
        for(int j = 0; j < m; j++)
        {
            udaljenost1[i][j] = -1;
            udaljenost2[i][j] = -1;
        }
    }
    put(n, m, xs, ys, udaljenost1);
    put(n, m, xv, yv, udaljenost2);
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < m; j++)
        {
            if(udaljenost1[i][j] < udaljenost2[i][j] && a[i][j] != '*')
            r++;
        }
    }
    cout << r;
}