#include <bits/stdc++.h>
using namespace std;
using ll = long long;
const double pi = acos(-1);
#define FOR(i,a,b) for (ll i=(a),__last_##i=(b);i<__last_##i;i++)
#define RFOR(i,a,b) for (ll i=(b)-1,__last_##i=(a);i>=__last_##i;i--)
#define REP(i,n) FOR(i,0,n)
#define RREP(i,n) RFOR(i,0,n)
#define __GET_MACRO3(_1, _2, _3, NAME, ...) NAME
#define rep(...) __GET_MACRO3(__VA_ARGS__, FOR, REP)(__VA_ARGS__)
#define rrep(...) __GET_MACRO3(__VA_ARGS__, RFOR, RREP)(__VA_ARGS__)
template<typename T> ostream& operator<<(ostream& os, const vector<T>& v) {
    REP(i,v.size()){if(i)os<<" ";os<<v[i];}return os;}
template<typename T> ostream& operator<<(ostream& os, const vector<vector<T>>& v) {
    REP(i,v.size()){if(i)os<<endl;os<<v[i];}return os;}

template<class T> inline bool chmin(T& a, T b) { if (a > b) { a = b; return true; } return false; }
template<class T> inline bool chmax(T& a, T b) { if (a < b) { a = b; return true; } return false; }

const int dx[4] = {1, 0, -1, 0};
const int dy[4] = {0, 1, 0, -1};

vector< vector<int> > Graph;
vector< int > value;



int main(int argc, const char * argv[]) {
    
    

    cin.tie(0);
    ios::sync_with_stdio(false);
   
    
    int H,W; cin >> H >> W;
    vector<string> field(H);
    rep(i,H) cin >> field[i];
     
    int U[H][W];
    int D[H][W];
    int R[H][W];
    int L[H][W];
    
    int seenL[H][W];
    int seenU[H][W];
    int seenR[H][W];
    int seenD[H][W];
    memset(seenL, false, sizeof(seenL));
    memset(seenU, false, sizeof(seenU));
    memset(seenR, false, sizeof(seenR));
    memset(seenD, false, sizeof(seenD));
    
    
    int Ans = 0;
    int ans = 0;
    
    
    
    
    rep(i,H){
        rep(j,W){
            
            
            
            
            if(field[i][j]=='#') {
                L[i][j] = 0;
                seenL[i][j] = true;
            }
            if(field[i][j]=='#') {
                U[i][j] = 0;
                seenU[i][j] = true;
            }
            if(field[i][W-1-j]=='#') {
                R[i][W-1-j] = 0;
                seenR[i][W-1-j] = true;
            }
            if(field[H-1-i][j]=='#') {
                D[H-1-i][j] = 0;
                seenD[H-1-i][j] = true;
            }
            
            
            
            
            
            if(j==0 && seenL[i][j]==false) {
                L[i][j] = 1;
                seenL[i][j] = true;
            }
            if(i==0 && seenU[i][j]==false) {
                U[i][j] = 1;
                seenU[i][j] = true;
            }
            if(j==0 && seenR[i][W-1-j]==false) {
                R[i][W-1-j] = 1;
                seenR[i][W-1-j] = true;
            }
            if(i==0 && seenD[H-1-i][j]==false) {
                D[H-1-i][j] = 1;
                seenD[H-1-i][j] = true;
            }
            
            
            
            
            if(seenL[i][j]==false) L[i][j] = L[i][j-1] + 1;
            if(seenU[i][j]==false) U[i][j] = U[i-1][j] + 1;
            if(seenR[i][W-1-j]==false) R[i][W-1-j] = R[i][W-j] + 1;
            if(seenD[H-1-i][j]==false) D[H-1-i][j] = D[H-i][j] + 1;
            
            
            
            
        
            
        }
        
    }
    
    rep(i,H){
        rep(j,W){
            ans = L[i][j]+U[i][j]+R[i][j]+D[i][j]-3;
            Ans = max(ans,Ans);
        }
    }
    
    cout << Ans << endl;
    
    
    
    
    
    
}


Measured memory_bytes: 129536