#include <bits/stdc++.h>
using ll=long long;
using namespace std;
#define rep_i(i, n) for (int i = 0; i < (n); ++i)
#define rep_ll(i, n) for (long long i = 0; i < (n); ++i)
#define r_rep_i(i, start, end) for (int i = (start); i < (end); ++i)
#define r_rep_ll(i, start, end) for (long long i = (start); i < (end); ++i)
#define debug_vi(v) copy((v).begin(), (v).end(), ostream_iterator<int>(cout, " "));
#define debug_vll(v) copy((v).begin(), (v).end(), ostream_iterator<long long>(cout, " "));
#define debug_vd(v) copy((v).begin(), (v).end(), ostream_iterator<double>(cout, " "));
#define sort_v(v) sort((v).begin(), (v).end()); //昇順
#define d_sort_vi(v) sort((v).begin(), (v).end(), greater<int>()); //降
#define d_sort_vd(v) sort((v).begin(), (v).end(), greater<double>()); //昇順
#define say(t) cout << (t) << endl;
#define sum_vi(v) accumulate((v).begin(), (v).end(), 0);
#define sum_vll(v)accumulate((v).begin(), (v).end(), 0LL);

int main(){
  cin.tie(0);
  ios::sync_with_stdio(0);
  int h, w;cin >> h >> w;
  vector<vector<int>> hoge(h, vector<int>(w));
  vector<vector<int>> L(h, vector<int>(w));
  vector<vector<int>> R(h, vector<int>(w));
  vector<vector<int>> U(h, vector<int>(w));
  vector<vector<int>> D(h, vector<int>(w));
  // vector<vector<int>> reco(h);
  // vector<int> fuga;
  char tmpp;
  rep_i(i, h){
    rep_i(v, w){
      cin >> tmpp;
      if(tmpp == '.'){
        hoge[i][v] = 0;
      }else{
        // fuga.push_back(v);
        hoge[i][v] = 1;
      }
    }
    // reco[i] = fuga;
    // fuga.clear();
  }

  // 左側
  int tmp;
  rep_i(i, h){
    rep_i(v, w){
      if(hoge[i][v] == 1){
        L[i][v] = 0;
      }else{
        if(v == 0){
          L[i][v] = 1;
        }else{
          L[i][v] = L[i][v - 1] + 1;
        }
      }
      
      tmp = w - (1 + v);
      if(hoge[i][tmp] == 1){
        R[i][tmp] = 0;
      }else{
        if(tmp == w - 1){
          R[i][tmp] = 1;
        }else{
          R[i][tmp] = R[i][tmp + 1] + 1;
        }
      }
    }
  }

  rep_i(i, w){
    rep_i(v, h){
      if(hoge[v][i] == 1){
        U[v][i] = 0;
      }else{
        if(v == 0){
          U[v][i] = 1;
        }else{
          U[v][i] = U[v - 1][i] + 1;
        }
      }
      
      tmp = h - (1 + v);
      if(hoge[tmp][i] == 1){
        D[tmp][i] = 0;
      }else{
        if(tmp == h - 1){
          D[tmp][i] = 1;
        }else{
          D[tmp][i] = D[tmp + 1][i] + 1;
        }
      }
    }
  }


  // for (int i = 0; i < h; i++){
  //   for(int v = 0; v < w; v++){
  //     cout << L[i][v] << " ";
  //   }
  //   cout << endl;
  // }
  // cout << endl;
  // for (int i = 0; i < h; i++){
  //   for(int v = 0; v < w; v++){
  //     cout << R[i][v] << " ";
  //   }
  //   cout << endl;
  // }
  // cout << endl;
  // for (int i = 0; i < h; i++){
  //   for(int v = 0; v < w; v++){
  //     cout << U[i][v] << " ";
  //   }
  //   cout << endl;
  // }
  // cout << endl;
  // for (int i = 0; i < h; i++){
  //   for(int v = 0; v < w; v++){
  //     cout << D[i][v] << " ";
  //   }
  //   cout << endl;
  // }
  // cout << endl;
  

  int max_c = -1;
  rep_i(i, h){
    rep_i(v, w){
      if(hoge[i][v] == 1) continue;
      int c = L[i][v] + R[i][v] + U[i][v] + D[i][v] - 3;
      if(max_c <= c){
        max_c = c;
        // cout << i << " " << v << endl;
      }
    }
  }

  say(max_c);
  // for (int i = 0; i < h; i++){
  //   for (int v = 0; v < reco[i].size(); v++){
  //     cout << reco[i][v] << " ";
  //   }
  //   cout << endl;
  // }
  


  // vector<vector<int>> fuga(h, vector<int>(w));
  // vector<vector<int>> point(h, vector<int>(w));
  // rep_i(i, h){
  //   rep_i(v, w){
  //     if(hoge[i][v] == 1)continue;
  //     if(reco[i].empty()){
  //       point[i][v] += w;
  //     }else{
        
  //     }
  //   }
  // }
}

Measured memory_bytes: 78848