using System;
using System.Linq;
using System.Collections.Generic;
namespace ConsoleApp1
{
    internal class Program
    {
        static void Main(string[] args)
        {
            string[] s = Console.ReadLine().Split(" ");
            int n = int.Parse(s[0]);
            int m = int.Parse(s[1]);
            string[,] matrica = new string[n, m];
            for (int i = 0; i < n; i++)
            {
                string x = Console.ReadLine();
                int j = 0;
                foreach (char c in x)
                {
                    matrica[i, j] = c.ToString();
                    j++;
                }
            }
            int brojac = 0;
            for (int i = 0; i < n * m; i++)
            {
                matrica = SirenjeVatre(matrica, n, m);
                matrica = Steva(matrica, n, m);
            }
            foreach (string polje in matrica)
            {
                if (polje == "S")
                {
                    brojac++;
                }
            }
            Console.WriteLine(brojac);
        }
        static string[,] Steva(string[,] matrica, int n, int m)
        {
            List<int> ipos = new List<int>();
            List<int> jpos = new List<int>();
            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] == ".")
                        {
                            ipos.Add(i - 1);
                            jpos.Add(j);
                        }
                        if (i < n - 1 && matrica[i + 1, j] == ".")
                        {
                            ipos.Add(i + 1);
                            jpos.Add(j);
                        }
                        if (j > 0 && matrica[i, j - 1] == ".")
                        {
                            ipos.Add(i);
                            jpos.Add(j - 1);
                        }

                        if (j < m - 1 && matrica[i, j + 1] == ".")
                        {
                            ipos.Add(i);
                            jpos.Add(j + 1);
                        }
                    }
                }
            }
            for (int i = 0; i < ipos.Count; i++)
            {
                matrica[ipos[i], jpos[i]] = "S";
            }
            return matrica;
        }
        static string[,] SirenjeVatre(string[,] matrica, int n, int m)
        {
            List<int> ipos = new List<int>();
            List<int> jpos = new List<int>();
            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] == ".")
                        {
                            ipos.Add(i - 1);
                            jpos.Add(j);
                        }
                        if (i < n - 1 && matrica[i + 1, j] == ".")
                        {
                            ipos.Add(i + 1);
                            jpos.Add(j);
                        }
                        if (j > 0 && matrica[i, j - 1] == ".")
                        {
                            ipos.Add(i);
                            jpos.Add(j - 1);
                        }

                        if (j < m - 1 && matrica[i, j + 1] == ".")
                        {
                            ipos.Add(i);
                            jpos.Add(j + 1);
                        }
                    }
                }
            }
            for (int i = 0; i < ipos.Count; i++)
            {
                matrica[ipos[i], jpos[i]] = "X";
            }
            return matrica;
        }
    }
}