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

class Program
{
    void Run()
    {
        var sc = new Scanner();
        int h = sc.NextInt();
        int w = sc.NextInt();
        bool[,] map = new bool[w, h];
        for (int i = 0; i < h; i++)
        {
            string s = sc.NextString();
            for (int j = 0; j < w; j++)
            {
                map[j, i] = s[j] == '.'; // 通路はtrue
            }
        }
        int[,] wc = new int[w, h];
        int[,] vc = new int[w, h];
        int[,] ww = new int[w, h];
        int[,] vw = new int[w, h];
        for (int i = 0; i < h; i++)
        {
            wc[0, i] = map[0, i] ? 1 : 0;
            for (int j = 1; j < w; j++)
            {
                if (!map[j, i]) continue;
                if (!map[j - 1, i] && map[j, i])
                {
                    wc[j, i] = 1;
                    continue;
                }
                wc[j, i] = wc[j - 1, i] + 1;
            }
        }
        for (int i = 0; i < w; i++)
        {
            vc[i, 0] = map[i, 0] ? 1 : 0;
            for (int j = 1; j < h; j++)
            {
                if (!map[i, j]) continue;
                if (!map[i, j - 1] && map[i, j - 1])
                {
                    vc[i, j] = 1;
                    continue;
                }
                vc[i, j] = vc[i, j - 1] + 1;
            }
        }

        for (int i = 0; i < h; i++)
        {
            ww[w - 1, i] = w - 1;
            for (int j = w - 2; j >= 0; j--)
            {
                if (!map[j, i]) continue;
                if (!map[j + 1, i] && map[j, i])
                {
                    ww[j, i] = j;
                    continue;
                }
                ww[j, i] = ww[j + 1, i];
            }
        }
        for (int i = 0; i < w; i++)
        {
            vw[i, h - 1] = h - 1;
            for (int j = h - 2; j >= 0; j--)
            {
                if (!map[i, j]) continue;
                if (!map[i, j + 1] && map[i, j])
                {
                    vw[i, j] = j;
                    continue;
                }
                vw[i, j] = vw[i, j + 1];
            }
        }

        int res = 0;
        for (int i = 0; i < h; i++)
        {
            for (int j = 0; j < w; j++)
            {
                if (!map[j, i]) continue;
                int l = wc[ww[j, i], i] + vc[j, vw[j, i]] - 1;
                res = Math.Max(l, res);
            }
        }
        Console.WriteLine(res);
    }

    static void Main(string[] args)
    {
        new Program().Run();
    }

    static long Gcd(long a, long b)

    {
        if (a < b) return Gcd(b, a);
        if (b == 0) return a;
        return Gcd(b, a % b);
    }
}

class Scanner
{
    int index = -1;
    string[] buf;

    public Scanner()
    {
    }

    public int NextInt()
    {
        CheckNext();
        return int.Parse(buf[index++]);
    }

    public long NextLong()
    {
        CheckNext();
        return long.Parse(buf[index++]);
    }

    public double NextDouble()
    {
        CheckNext();
        return double.Parse(buf[index++]);
    }

    public string NextString()
    {
        CheckNext();
        return buf[index++];
    }

    private void CheckNext()
    {
        if (index >= 0 && index < buf.Length) return;

        buf = Console.ReadLine().Split(' ');
        index = 0;
    }
}


Measured memory_bytes: 81472