#include <bits/stdc++.h>
#define endl '\n'
#define fi first
#define se second
#define pb push_back
#define yes "YES"
#define no "NO "

using namespace std;

using ll = long long;
const ll inf=1e18;
using ld = long double;


void solve()
{
    ll n,m,i,j,sx,sy,res=0;
    cin >> n >> m;
    queue<pair<ll,ll>>q,vq;
    pair<ll,ll>tren;
    vector<string>matt(n);
    vector<vector<ll>>steva(n,vector<ll>(m,inf)),vatra(n,vector<ll>(m,inf));
    vector<vector<bool>>visited(n,vector<bool>(m));
    vector<pair<ll,ll>>povezaneVatre;
    for(auto &x:matt)
    {
        cin >> x;
    }
    for(i=0;i<n;i++)
    {
        for(j=0;j<m;j++)
        {
            if(matt[i][j]=='S')
            {
                steva[i][j]=0;
                sx=i;
                sy=j;
                break;
            }
            if(matt[i][j]=='X')
            {
                vatra[i][j]=0;
                vq.push({i,j});
            }
        }
    }
    q.push({sx,sy});
    visited[sx][sy]=true;
    while(!q.empty())
    {
        tren=q.front();
        q.pop();
        if(tren.fi>0)
        {
            if((!visited[tren.fi-1][tren.se]) && matt[tren.fi-1][tren.se]!='*')
            {
                visited[tren.fi-1][tren.se]=true;
                steva[tren.fi-1][tren.se]=steva[tren.fi][tren.se]+1;
                q.push({tren.fi-1,tren.se});
            }

        }
        if(tren.fi<n-1)
        {
            if((!visited[tren.fi+1][tren.se]) && matt[tren.fi+1][tren.se]!='*')
            {
                visited[tren.fi+1][tren.se]=true;
                steva[tren.fi+1][tren.se]=steva[tren.fi][tren.se]+1;
                q.push({tren.fi+1,tren.se});
            }

        }
        if(tren.se>0)
        {
            if((!visited[tren.fi][tren.se-1]) && matt[tren.fi][tren.se-1]!='*')
            {
                visited[tren.fi][tren.se-1]=true;
                steva[tren.fi][tren.se-1]=steva[tren.fi][tren.se]+1;
                q.push({tren.fi,tren.se-1});
            }

        }
        if(tren.se<m-1)
        {
            if((!visited[tren.fi][tren.se+1]) && matt[tren.fi][tren.se+1]!='*')
            {
                visited[tren.fi][tren.se+1]=true;
                steva[tren.fi][tren.se+1]=steva[tren.fi][tren.se]+1;
                q.push({tren.fi,tren.se+1});
            }

        }
    }
    for(i=0;i<n;i++)
    {
        for(j=0;j<m;j++)
        {
            visited[i][j]=false;
            if(matt[i][j]=='X')
            {
                visited[i][j]=true;
            }
        }
    }
    while(!vq.empty())
    {
        tren=vq.front();
        vq.pop();
        if(tren.fi>0)
        {
            if((!visited[tren.fi-1][tren.se]) && matt[tren.fi-1][tren.se]!='*')
            {
                visited[tren.fi-1][tren.se]=true;
                vatra[tren.fi-1][tren.se]=vatra[tren.fi][tren.se]+1;
                vq.push({tren.fi-1,tren.se});
            }

        }
        if(tren.fi<n-1)
        {
            if((!visited[tren.fi+1][tren.se]) && matt[tren.fi+1][tren.se]!='*')
            {
                visited[tren.fi+1][tren.se]=true;
                vatra[tren.fi+1][tren.se]=vatra[tren.fi][tren.se]+1;
                vq.push({tren.fi+1,tren.se});
            }

        }
        if(tren.se>0)
        {
            if((!visited[tren.fi][tren.se-1]) && matt[tren.fi][tren.se-1]!='*')
            {
                visited[tren.fi][tren.se-1]=true;
                vatra[tren.fi][tren.se-1]=vatra[tren.fi][tren.se]+1;
                vq.push({tren.fi,tren.se-1});
            }

        }
        if(tren.se<m-1)
        {
            if((!visited[tren.fi][tren.se+1]) && matt[tren.fi][tren.se+1]!='*')
            {
                visited[tren.fi][tren.se+1]=true;
                vatra[tren.fi][tren.se+1]=vatra[tren.fi][tren.se]+1;
                vq.push({tren.fi,tren.se+1});
            }

        }
    }
    for(i=0;i<n;i++)
    {
        for(j=0;j<m;j++)
        {
         //   cout << steva[i][j] << " ";
            if(steva[i][j]<vatra[i][j])
            {
                res++;
            }
        }
        //cout << endl;
    }

    cout << res << endl;

}

int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    ll t=1;
   // cin >> t;
    while(t--)
    {
        solve();
    }
}