#include <bits/stdc++.h>

#define ll long long

using namespace std;

char mat[1000][1000];

typedef struct {
    int i, j;
    char s;
} Pos;

int main() {
    ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);
    int n, m;
    cin >> n >> m;
    queue<Pos> q;
    for(int i=0;i<n;i++)
        for(int j=0;j<m;j++)
        {
            cin >> mat[i][j];
            if(mat[i][j] == 'X')
                q.push({i, j, 'X'});
        }
    int dirs[][2] = {{0, 1}, {0, -1}, {1, 0}, {-1, 0}};
    for(int i=0;i<n;i++)
        for(int j=0;j<m;j++)
            if(mat[i][j] == 'S')
                q.push({i, j, 'S'});
    Pos tmp;
    while(!q.empty()) {
        tmp = q.front();
        q.pop();
        for(auto& i : dirs) {
            if(tmp.i + i[0] < 0 || tmp.i + i[0] >= n) continue;
            if(tmp.j + i[1] < 0 || tmp.j + i[1] >= m) continue;
            if(mat[tmp.i + i[0]][tmp.j + i[1]] != '.') continue;
            mat[tmp.i + i[0]][tmp.j + i[1]] = tmp.s;
            q.push({tmp.i + i[0], tmp.j + i[1], tmp.s});
        }
    }
    int cnt = 0;
    for(int i=0;i<n;i++)
        for(int j=0;j<m;j++)
            cnt += mat[i][j] == 'S';
    cout << cnt << '\n';
}