using System;
using System.Collections.Generic;
internal class Program
{
   
    static void Main(string[] args)
    {
        string[] u1 = Console.ReadLine().Split(' ');
        int n = Convert.ToInt32(u1[0]); int m = Convert.ToInt32(u1[1]);
        char[,] mapa=new char[n+2,m+2];
        for(int i=0; i<n+2; i++)
        {
            mapa[i, 0] = '*';
            mapa[i, m + 1] = '*';
        }
        for (int j = 0; j < m + 2; j++)
        {
            mapa[0, j] = '*';
            mapa[n+1,j] = '*';
        }
        for (int i = 1; i < n+1; i++)
        {
            string u2=Console.ReadLine();
            for(int j=1; j < m+1; j++)
            {
                mapa[i, j] = u2[j-1];
            }
        }
        List<char> elementi = new List<char>();
        for (int i = 1; i < n + 1; i++)
        {               
            for (int j = 1; j < m + 1; j++)
            {

               elementi.Add(mapa[i, j]);
            }
         
        }
        char[,] mapan=new char[n+2,m+2];
        for (int i = 1; i < n + 1; i++)
        {
            for (int j = 1; j < m + 1; j++)
            {

                mapan[i, j] = mapa[i,j];
            }

        }
        
        int sbroj = 1;
        while (elementi.Contains('.'))
        {
            for (int i = 1; i < n + 1; i++)
            {
                for (int j = 1; j < m + 1; j++)
                {

                    mapa[i, j] = mapan[i, j];
                }

            }

            for (int i = 1; i < n + 1; i++)
            {
                for (int j = 1; j < m + 1; j++)
                {
                    if (mapa[i, j] == 'X')
                    {

                        if (mapa[i - 1, j] == '.')
                        {
                            mapan[i - 1, j] = 'X'; 
                            elementi.Remove('.');
                        }
                        if (mapa[i, j - 1] == '.')
                        {
                            mapan[i, j - 1] = 'X'; 
                            elementi.Remove('.');
                        }
                        if (mapa[i + 1, j] == '.')
                        {
                            mapan[i + 1, j] = 'X'; 
                            elementi.Remove('.');
                        }
                        if (mapa[i, j + 1] == '.')
                        {
                            mapan[i, j + 1] = 'X'; 
                            elementi.Remove('.');
                        }


                    }
                }

            }
            for (int i = 1; i < n + 1; i++)
            {
                for (int j = 1; j < m + 1; j++)
                {
                    if (mapa[i, j] == 'S')
                    {
                        if (mapan[i - 1, j] == '.')
                        {
                            mapan[i - 1, j] = 'S';
                            elementi.Remove('.'); 
                            sbroj++;
                        }
                        if (mapan[i, j - 1] == '.')
                        {
                            mapan[i, j - 1] = 'S';
                            elementi.Remove('.'); 
                            sbroj++;
                        }
                        if (mapan[i + 1, j] == '.')
                        {
                            mapan[i + 1, j] = 'S'; 
                            elementi.Remove('.'); 
                            sbroj++;
                        }
                        if (mapan[i, j + 1] == '.')
                        {
                            mapan[i, j + 1] = 'S'; 
                            elementi.Remove('.');
                            sbroj++;
                        }
                    }
                }

            }
            
        }
        Console.WriteLine(sbroj);
    }
}