object Main {

  def main(args: Array[String]): Unit = {
    val sc = new java.util.Scanner(System.in)

    val Array(h, w) = scala.io.StdIn.readLine().split(" ").map(_.toInt)
    val S = (0 until h) map (_ => scala.io.StdIn.readLine())
    val dp = Array.fill[Short](h, w, 2)(-1) // 未計算の場合-1, dp(i)(j)(0) 縦の数 dp(i)(j)(1)横の数
    var i = 0
    while (i < h) {
      var j = 0
      while (j < w) {
        if (S(i)(j) == '.') { // 障害物ではない場合
          if (dp(i)(j)(0) == -1) { // 縦方向未計算の場合のみ計算
            var di = 0
            while (i + di < h && S(i+di)(j) == '.') { // 障害物に当たるか壁に当たるかまで
              di += 1
            }
            var dii = 0
            while (dii < di) {
              dp(i+dii)(j)(0) = (di - 1).toShort
              dii += 1
            }
          }
          if (dp(i)(j)(1) == -1) { // 横方向未計算の場合のみ計算
            var dj = 0
            while (j + dj < w && S(i)(j+dj) == '.') { // 障害物に当たるか壁に当たるかまで
              dj += 1
            }
            var djj = 0
            while (djj < dj) {
              dp(i)(j+djj)(1) = (dj - 1).toShort
              djj += 1
            }
          }
        }
        j += 1
      }
      i += 1
    }

    var max = 0
    i = 0
    while (i < h) {
      var j = 0
      while (j < w) {
        if (S(i)(j) == '.') { // 障害物ではない場合
          max = Math.max(max, dp(i)(j)(0) + dp(i)(j)(1) + 1)
        }
        j += 1
      }
      i += 1
    }
    println(max)
  }

}
