import java.util.*

class Scanner(`in`: java.io.InputStream) {
    private val reader = java.io.BufferedReader(java.io.InputStreamReader(`in`))
    private var tokenizer: StringTokenizer? = null

    fun next(): String {
        if (tokenizer?.hasMoreTokens() != true) {
            tokenizer = StringTokenizer(reader.readLine())
        }
        return tokenizer!!.nextToken()
    }

    fun nextLine(): String {
        return if (tokenizer?.hasMoreTokens() != true) {
            reader.readLine()
        } else tokenizer!!.nextToken("\n")
    }
}

fun main(args: Array<String>) {
    val pw = java.io.PrintWriter(System.out)
    Problem.solve(Scanner(System.`in`), pw)
    pw.flush()
}

object Problem {
    fun solve(sc: Scanner, pw: java.io.PrintWriter) {
        val H = sc.next().toInt()
        val W = sc.next().toInt()
        val S = Array(H) { sc.next().map { it == '#' }.toTypedArray() }
        val A = Array(H) { IntArray(W) }

        for (y in 0 until H) {
            var p = 0
            for (x in 0 until W) {
                if (S[y][x]) {
                    for (xx in p until x) A[y][xx] += x - p
                    p = x + 1
                }
            }
            for (xx in p until W) A[y][xx] += W - p
        }

        for (x in 0 until W) {
            var p = 0
            for (y in 0 until H) {
                if (S[y][x]) {
                    for (yy in p until y) A[yy][x] += y - p
                    p = y + 1
                }
            }
            for (yy in p until H) A[yy][x] += H - p
        }
        var ans = 0
        for (y in 0 until H) for (x in 0 until W)
            if (ans < A[y][x]) ans = A[y][x]

        pw.println(ans - 1)
    }
}
