using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ABC129D
{
    class Program
    {
        static void Main(string[] args)
        {
            string[] input = Console.ReadLine().Split();

            int H = int.Parse(input[0]);
            int W = int.Parse(input[1]);

            string[] S = new string[H];
            string[,] SS = new string[H, W];
            int[,] L = new int[H, W];
            int[,] R = new int[H, W];
            int[,] U = new int[H, W];
            int[,] D = new int[H, W];
            int[,] SUM = new int[H, W];


            int MAX = 3000;

            for (int i = 0; i < H; i++)
            {
                S[i] = Console.ReadLine();
                for (int j = 0; j < W; j++)
                {
                    SS[i, j] = S[i].Substring(j, 1);
                    if (SS[i, j] == "#")
                    {
                        L[i, j] = 0;
                        R[i, j] = 0;
                        U[i, j] = 0;
                        D[i, j] = 0;
                    }
                    else
                    {
                        L[i, j] = MAX;
                        R[i, j] = MAX;
                        U[i, j] = MAX;
                        D[i, j] = MAX;
                    }
                }
            }
            //左から調べる
            for (int i = 0; i < H; i++)
            {
                if (L[i, 0] == MAX)
                {
                    L[i, 0] = 1;//左端が障害物でないなら
                }
                for (int j = 1; j < W; j++)
                {
                    if (L[i, j] == MAX)
                    {
                        L[i, j] = L[i, j - 1] + 1;
                    }
                }
            }
            //右から調べる
            for (int i = 0; i < H; i++)
            {
                if (R[i, W - 1] == MAX)
                {
                    R[i, W - 1] = 1;//右端が障害物でないなら
                }
                for (int j = W - 2; j >= 0; j--)
                {
                    if (R[i, j] == MAX)
                    {
                        R[i, j] = R[i, j + 1] + 1;
                    }
                }
            }
            //上から調べる
            for (int j = 0; j < W; j++)
            {
                if (U[0, j] == MAX)
                {
                    U[0, j] = 1;//一番上が障害物でないなら
                }
                for (int i = 1; i < H; i++)
                {
                    if (U[i, j] == MAX)
                    {
                        U[i, j] = U[i - 1, j] + 1;
                    }
                }
            }
            //下から調べる
            for (int j = 0; j < W; j++)
            {
                if (D[H - 1, j] == MAX)
                {
                    D[H - 1, j] = 1;//一番下が障害物でないなら
                }
                for (int i = H - 2; i >= 0; i--)
                {
                    if (D[i, j] == MAX)
                    {
                        D[i, j] = D[i + 1, j] + 1;
                    }
                }
            }
            //上下左右を集計する
            int ans = 0;
            for (int i = 0; i < H; i++)
            {
                for (int j = 0; j < W; j++)
                {
                    SUM[i, j] = L[i, j] + R[i, j] + U[i, j] + D[i, j] - 3;
                    ans = Math.Max(ans, SUM[i, j]);
                }
            }
            Console.WriteLine(ans);            
        }
    }
}


Measured memory_bytes: 229592