using System;

namespace Steva_i_lavirint
{
	class Program
	{
		static int sadrzi1(char[,] l,int n,int m)
		{
			int br=0;
			for(int i =0;i<n;i++)
	        {
	            for(int j=0;j<m;j++)
	            {
	            	if(l[i,j]=='X')
	            	{
	            		br=1;
	            	}
	            }
			}
			return br;
		}
		static void sadrzi(char[,] l,int n,int m)
		{
			int br=0,x=0,y=0;
			for(int i =0;i<n;i++)
	        {
	            for(int j=0;j<m;j++)
	            {
	            	if(l[i,j]=='.')
	            	{
	            		br++;
	            		x=i;
	            		y=j;
	            	}
	            }
			}
			if(br==1)
			{
				l[x,y]='S';
			}
		}
		public static void Main(string[] args)
		{
	        string[] red=Console.ReadLine().Split();
	        int n=int.Parse(red[0]);
	        int m=int.Parse(red[1]);
	        int t=0;
	        char[,] l=new char[n,m];
	
	        for(int i =0;i<n;i++)
	        {
	            string red1 = Console.ReadLine();
	            for(int j=0;j<m;j++)
	            {
	                l[i,j]=red1[j];
	            }
	        }
			if(sadrzi1(l,n,m)==1)
			{
				for(int i =0;i<n;i++)
		        {
		            for(int j=0;j<m;j++)
		            {
		            	if(t!=-1)
		            	{
			            	if(l[i,j]=='X')
			            	{
			            		if(i>0 && l[i-1,j]=='.')
			            		{
			            			l[i-1,j]='X';
			            		}
			            		if(i<n-1 && l[i+1,j]=='.')
			            		{
			            			l[i+1,j]='X';
			            		}
			            		if(j<m-1 && l[i,j+1]=='.')
			            		{
			            			l[i,j+1]='X';
			            		}
			            		if(j>0 && l[i,j-1]=='.')
			            		{
			            			l[i,j-1]='X';
			            		}
			            	}
		            	}
		            	if(l[i,j]=='S')
		            	{ 	
		            		t=1;
		            		if(i>0 && l[i-1,j]=='.')
			           		{
			           			l[i-1,j]='S';
			           		}
		            		else
		            		{
				           		if(i<n-1 && l[i+1,j]=='.')
				           		{
				           			l[i+1,j]='S';
				           		}
				           		else
				           		{
					           		if(j<m-1 && l[i,j+1]=='.')
					           		{
					           			l[i,j+1]='S';
					           		}
					           		else
					           		{
						           		if(j>0 && l[i,j-1]=='.')
						           		{
						           			l[i,j-1]='S';
						           		}
						           		else
						           		{
						           			sadrzi(l,n,m);
						           		}
					           		}
		            			}
		            		}
		            	}
		            	else
		            	{
		            		t=-1;
		            	}
		            }
		        }
				sadrzi(l,n,m);
			}
			else
			{
				for(int i=0;i<n;i++)
				{
					for(int j=0;j<m;j++)
					{
						if(l[i,j]!='*')
						{
							l[i,j]='S';
						}
					}
				}
			}
			int brm=0;
			for(int i =0;i<n;i++)
	        {
	            for(int j=0;j<m;j++)
	            {
	            	if(l[i,j]=='S')
	            	{
	            		brm++;
	            	}
	            }
			}
			Console.WriteLine(brm);
	        Console.ReadKey(true);
		}
	}
}