#include <iostream>
#include <map>
#include <vector>
#include <cmath>
#include <string>
#include <cstring>
#include <algorithm>
#include <climits>
#include <stack>
#include <queue>
#include <set>
#include <cctype>
#include <bitset>
#include <type_traits>

#include <list>
using namespace std;

#define REP(i, n) for (int i = 0; i < (n); ++i)
#define rep(i, a, b) for (int i = a; i < (b); ++i)
#define YES(j) cout << (j ? "YES" : "NO") << endl;
#define Yes(j) std::cout << (j ? "Yes" : "No") << endl;
#define yes(j) std::cout << (j ? "yes" : "no") << endl;

int main(void)
{
    int h, w;
    cin >> h >> w;
    int a[h][w], b[h][w];
    int ans = 0;

    vector<string> m;
    REP(i, h)
    {
        string s;
        cin >> s;
        m.push_back(s);
    }

    REP(i, h)
    {
        REP(j, w)
        {
            a[i][j] = 0;
            b[i][j] = 0;
        }
    }

    REP(i, h)
    {
        int cnt = 0;
        REP(j, w)
        {
            if (m[i][j] == '#')
            {
                for (int k = j - 1; k >= 0; k--)
                {
                    if (m[i][k] == '.')
                    {
                        a[i][k] = cnt;
                    }
                    else
                    {
                        break;
                    }
                }
                cnt = 0;
            }
            else
            {
                cnt++;
                /* code */
                if (j == w - 1)
                {
                    for (int k = j; k >= 0; k--)
                    {
                        if (m[i][k] == '.')
                        {
                            a[i][k] = cnt;
                        }
                        else
                        {
                            cnt = 0;
                            break;
                        }
                    }
                }
            }
        }
    }

    REP(i, w)
    {
        int cnt = 0;
        REP(j, h)
        {
            if (m[j][i] == '#')
            {
                for (int k = j - 1; k >= 0; k--)
                {
                    if (m[k][i] == '.')
                    {
                        b[k][i] = cnt;
                    }
                    else
                    {
                        break;
                    }
                }
                cnt = 0;
            }
            else
            {
                cnt++;
                if (j == h - 1)
                {
                    for (int k = j; k >= 0; k--)
                    {
                        if (m[k][i] == '.')
                        {
                            b[k][i] = cnt;
                        }
                        else
                        {
                            cnt = 0;
                            break;
                        }
                    }
                }
                /* code */
            }
        }
    }

    REP(i, h)
    {
        REP(j, w)
        {
            //cout << a[i][j] << " ";
            if (m[i][j] == '.')
            {
                ans = max(ans, a[i][j] + b[i][j] - 1);
            }
        }
        //cout << endl;
    }

    cout << ans << endl;
}


Measured memory_bytes: 35584