using System;
using System.Runtime.InteropServices;
using System.Text.RegularExpressions;

class Program
{
    static void Main(string[] args)
    {

        static int BrojPolja(string[,] matrica, int n, int m)
        {
            int resenje = 0;
            for (int i = 0; i < n; i++)
            {
                for (int j = 0; j < m; j++)
                {
                    if (matrica[i, j] == "S") resenje++;
                }
            }
            return resenje;
        }

        string[] d = Console.ReadLine().Split(null);
        int n = int.Parse(d[0]);
        int m = int.Parse(d[1]);
        string[,] matrica = new string[n, m];
        string s;
        for (int i = 0; i < n; i++)
        {
            s = Console.ReadLine();
            for (int j = 0; j < m; j++)
            {

                matrica[i, j] = s.Substring(j, 1);
            }
        }
        //ispis
        //for (int i = 0; i < n; i++)
        //{
        //    for (int j = 0; j < m; j++)
        //    {
        //        Console.Write(matrica[i, j]);
        //    }
        //    Console.WriteLine();
        //}
        int resenje = 1;
        for (int i = 0; i < n; i++)
        {
            for (int j = 0; j < m; j++)
            {
                if (matrica[i, j] == "X")
                {
                    if (i > 0 && matrica[i - 1, j] == "S") resenje = 0;
                    if (j > 0 && matrica[i, j - 1] == "S") resenje = 0;
                    if (i < n - 1 && matrica[i + 1, j] == "S") resenje = 0;
                    if (j < m - 1 && matrica[i, j + 1] == "S") resenje = 0;
                }
            }
        }
        if (resenje != 0)
        {
            int brojesova=0;
            int brojesovapravematrice = 0;
            while (true)
            {
                for (int i = 0; i < n; i++)
                {
                    for (int j = 0; j < m; j++)
                    {
                        if (matrica[i, j] == "X")
                        {
                            if (i > 0 && matrica[i - 1, j] == ".") matrica[i - 1, j] = "x";
                            if (j > 0 && matrica[i, j - 1] == ".") matrica[i, j - 1] = "x";
                            if (i < n - 1 && matrica[i + 1, j] == ".") matrica[i + 1, j] = "x";
                            if (j < m - 1 && matrica[i, j + 1] == ".") matrica[i, j + 1] = "x";
                        }
                    }
                }  
                
                for (int i = 0; i < n; i++)
                {
                    for (int j = 0; j < m; j++)
                    {
                        if (matrica[i, j] == "S")
                        {
                            if (i > 0 && matrica[i - 1, j] == ".") matrica[i - 1, j] = "s";
                            if (j > 0 && matrica[i, j - 1] == ".") matrica[i, j - 1] = "s";
                            if (i < n - 1 && matrica[i + 1, j] == ".") matrica[i + 1, j] = "s";
                            if (j < m - 1 && matrica[i, j + 1] == ".") matrica[i, j + 1] = "s";
                        }
                    }
                }

                //for (int i = 0; i < n; i++)
                //{
                //    for (int j = 0; j < m; j++)
                //    {
                //        if (matrica[i, j] == "x")
                //        {
                //            matrica[i, j] = "X";
                //        }
                //    }
                //}

                for (int i = 0; i < n; i++)
                {
                    for (int j = 0; j < m; j++)
                    {
                        if (matrica[i, j] == "s")
                        {
                            matrica[i, j] = "S";
                        }
                    }
                }

                //Console.WriteLine("----");

                //for (int i = 0; i < n; i++)
                //{
                //    for (int j = 0; j < m; j++)
                //    {
                //        Console.Write(matrica[i, j]);
                //    }
                //    Console.WriteLine();
                //}

                brojesovapravematrice = BrojPolja(matrica, n, m);
                if (brojesova == brojesovapravematrice) break;
                brojesova = brojesovapravematrice;
            }
            resenje = 0;
            for (int i = 0; i < n; i++)
            {
                for (int j = 0; j < m; j++)
                {
                    if (matrica[i, j] == "S") resenje++;
                }
            }
        }
        
        //for (int i = 0; i < n; i++)
        //{
        //    for (int j = 0; j < m; j++)
        //    {
        //        Console.Write(matrica[i, j]);
        //    }
        //    Console.WriteLine();
        //}
        Console.WriteLine(resenje);
    }
}