#include <bits/stdc++.h>
using namespace std;
typedef long long int ll;

#define FOR(i,a,b) for(int i=(a);i<(b);++i)
#define REP(i,n)   FOR(i,0,n)

#define DUMP(var) std::cout << #var " = " << var << std::endl;

#define PRINT(os, c)                              \
  do {                                            \
    os << "[ ";                                   \
    for (auto i = c.begin(); i != c.end(); i++) { \
      if (i != c.begin()) {                       \
        os << ", ";                               \
      }                                           \
      os << *i;                                   \
    }                                             \
    os << " ]";                                   \
    return os;                                    \
  } while (0)
#define PRINT_MAP(os, c)                          \
  do {                                            \
    os << "{ ";                                   \
    for (auto i = c.begin(); i != c.end(); i++) { \
      if (i != c.begin()) {                       \
        os << ", ";                               \
      }                                           \
      os << (*i).first << " => " << (*i).second;  \
    }                                             \
    os << " }";                                   \
    return os;                                    \
  } while (0)
#define PRINT_SET(os, c)                          \
  do {                                            \
    os << "( ";                                   \
    for (auto i = c.begin(); i != c.end(); i++) { \
      if (i != c.begin()) {                       \
        os << ", ";                               \
      }                                           \
      os << *i;                                   \
    }                                             \
    os << " )";                                   \
    return os;                                    \
  } while (0)

template <typename T>
std::ostream& operator<<(std::ostream& os, const std::vector<T>& c) {
  PRINT(os, c);
}
template <typename T>
std::ostream& operator<<(std::ostream& os, const std::deque<T>& c) {
  PRINT(os, c);
}
template <typename T>
std::ostream& operator<<(std::ostream& os, const std::list<T>& c) {
  PRINT(os, c);
}
template <typename T>
std::ostream& operator<<(std::ostream& os, const std::forward_list<T>& c) {
  PRINT(os, c);
}
template <typename T, typename U>
std::ostream& operator<<(std::ostream& os, const std::map<T, U>& c) {
  PRINT_MAP(os, c);
}
template <typename T, typename U>
std::ostream& operator<<(std::ostream& os, const std::multimap<T, U>& c) {
  PRINT_MAP(os, c);
}
template <typename T, typename U>
std::ostream& operator<<(std::ostream& os, const std::unordered_map<T, U>& c) {
  PRINT_MAP(os, c);
}
template <typename T, typename U>
std::ostream& operator<<(std::ostream& os,
                         const std::unordered_multimap<T, U>& c) {
  PRINT_MAP(os, c);
}
template <typename T>
std::ostream& operator<<(std::ostream& os, const std::set<T>& c) {
  PRINT_SET(os, c);
}
template <typename T>
std::ostream& operator<<(std::ostream& os, const std::multiset<T>& c) {
  PRINT_SET(os, c);
}
template <typename T>
std::ostream& operator<<(std::ostream& os, const std::unordered_set<T>& c) {
  PRINT_SET(os, c);
}
template <typename T>
std::ostream& operator<<(std::ostream& os,
                         const std::unordered_multiset<T>& c) {
  PRINT_SET(os, c);
}
template <typename T, typename U>
std::ostream& operator<<(std::ostream& os, const std::pair<T, U>& p) {
  os << "< " << p.first << ", " << p.second << " >";
  return os;
}
vector<string> m;
int H,W;
vector<vector<int>> yoko;
vector<vector<int>> tate;



int main() {
  cin>>H>>W;
  yoko = vector<vector<int>>(H, vector<int>(W,0));
  tate = vector<vector<int>>(H, vector<int>(W,0));
  REP(i,H){
    string s;
    cin>>s;
    m.push_back(s);
  }
  int ans = 0;
  REP(i,H){
    int tmp = 1;
    REP(j,W){
      if(m[i][j] =='#') tmp = 0;
      yoko[i][j]=tmp;
      tmp++;
    }
    tmp = 0;
    for(int j = W-1;j>=0;j--){
      if(m[i][j] =='#'){
        tmp = 0;
        continue;
      }
      tmp = max(tmp,yoko[i][j]);
      yoko[i][j]=tmp;
    }
  }

  REP(j,W){
    int tmp = 1;
    REP(i,H){
      if(m[i][j] =='#') tmp = 0;
      tate[i][j]=tmp;
      tmp++;
    }
    tmp = 0;
    for(int i = H-1;i>=0;i--){
      if(m[i][j] =='#'){
        tmp = 0;
        continue;
      }
      tmp = max(tmp,tate[i][j]);
      tate[i][j]=tmp;
    }
  }

  REP(i,H){
    REP(j,W){
      ans = max(ans, tate[i][j]+yoko[i][j]);
    }
  }
  cout<<ans-1<<endl;
  
  return 0;
}


Measured memory_bytes: 35712