#include<bits/stdc++.h>
#include<vector>
#include<string>
#include<algorithm>
#include<cmath>

#define fast ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
#define int long long int
#define mod 1000000007
#define inf 1e18+42
#define endl "\n"
#define pi 3.1415926535897932384626433832795028841971693993751058
#define maxn 100005

#define out1(a) cout<<#a<<" "<<a<<endl
#define out2(a,b) cout<<#a<<" "<<a<<" "<<#b<<" "<<b<<endl
#define out3(a,b,c) cout<<#a<<" "<<a<<" "<<#b<<" "<<b<<" "<<#c<<" "<<c<<endl

#define rep(i,a,b) for(int i=a;i<b;i++)
#define repr(i,a,b) for(int i=a;i>=b;i--)
#define fori(it,A) for(auto it=A.begin();it!=A.end();it++)

#define ft first
#define sd second
#define pb push_back
#define mp make_pair
#define pq priority_queue
#define all(x) (x).begin(),(x).end()
#define zero(x) memset(x,0,sizeof(x));
#define ceil(a,b) (a+b-1)/b
 
using namespace std;

int binpow(int a, int b) {
    int res = 1;
    while (b > 0) {
        if (b & 1)
            res = res * a;
        a = a * a;
        b >>= 1;
    }
    return res;
}

//START OF CODE ->->->->->->->

void solve()
{
    int n,m;
    cin>>n>>m;
    vector< vector<char> > a(n,vector<char>(m));
    rep(i,0,a.size()){
        rep(j,0,a[i].size()){
            cin>>a[i][j];
        }
    }
    int ans1[n][m];
    zero(ans1);
    int ans2[n][m];
    zero(ans2);
    rep(i,0,n){
        rep(j,0,m){
            if ( a[i][j] == '#'){
                ans1[i][j] = -1;
            }
            else
            {
                if ( j-1 >= 0 && a[i][j-1] != '#' ){
                    ans1[i][j] = ans1[i][j-1] + 1;
                }
                else{
                    ans1[i][j] = 1;
                }
            }
            
        }
    }
    rep(j,0,m){
        rep(i,0,n){
            if ( a[i][j] == '#'){
                ans2[i][j] = -1;
            }
            else
            {
                if ( i-1 >= 0 && a[i-1][j] != '#' ){
                    ans2[i][j] = ans2[i-1][j] + 1;
                }
                else {
                    ans2[i][j] = 1;
                }
            }
        }
    }
    // rep(i,0,n){
    //     rep(j,0,m){
    //         cout<<ans1[i][j]<<" ";
    //     }
    //     cout<<endl;
    // }
    rep(i,0,n){
        int x = -1;
        repr(j,m-1,0){
            if ( ans1[i][j] == -1 ){
                x = -1;
                continue;
            }
            else{
                x = max(ans1[i][j],x);
                ans1[i][j] = x;
            }
        }
    }
    rep(j,0,m){
        int x = -1;
        repr(i,n-1,0){
            if ( ans2[i][j] == -1 ){
                x = -1;
                continue;
            }
            else{
                x = max(ans2[i][j],x);
                ans2[i][j] = x;
            }
        }
    }
    // rep(i,0,n){
    //     rep(j,0,m){
    //         cout<<ans1[i][j]<<" ";
    //     }
    //     cout<<endl;
    // }
    int ans = 0;
    rep(i,0,n){
        rep(j,0,m){
            ans = max(ans,ans1[i][j]+ans2[i][j]-1);
        }
    }
    cout<<ans<<endl;
}

//END OF CODE ->->->->->->->->

signed main()
{
    fast;
    int t = 1;
    // cin>>t;

    while(t--)
    {
        solve();
    }
    return 0;
}



Measured memory_bytes: 66688