import java.io.IOException
import java.util.*



    fun main(args: Array<String>) {
        val sc = FastScanner()
        val h = sc.nextInt()
        val w = sc.nextInt()
        val highest = ShortArray(w)
        val streak = ShortArray(w)
        var max = 0
        for (height in 0 until h) {
            var lastWall = -1
            var width = 0
            while (width < w) {
                if (sc.readByte() != '.'.toInt()) {
                    if (lastWall != width - 1) {
                        val len = (width - lastWall - 1).toShort()
                        for (i in lastWall + 1 until width) if (len > highest[i]) highest[i] = len
                    }
                    val res = highest[width] + streak[width]
                    if (res > max) max = res
                    streak[width] = 0
                    highest[width] = streak[width]
                    lastWall = width
                } else {
                    streak[width]++
                }
                width++
            }
            sc.readByte()
            if (lastWall != width - 1) {
                val len = (width - lastWall - 1).toShort()
                for (i in lastWall + 1 until width) {
                    val current = highest[i]
                    if (len > current) highest[i] = len
                }
            }
        }
        for (width in 0 until w) {
            if (streak[width] != 0.toShort()) {
                val res = highest[width] + streak[width]
                if (res > max) max = res
            }
        }
        println(max - 1)
    }


internal class FastScanner {
    private val `in` = System.`in`
    private val buffer = ByteArray(1024)
    private var ptr = 0
    private var buflen = 0
    private fun hasNextByte(): Boolean {
        return if (ptr < buflen) {
            true
        } else {
            ptr = 0
            try {
                buflen = `in`.read(buffer)
            } catch (ignored: IOException) {
            }
            buflen > 0
        }
    }

    fun readByte(): Int {
        return if (hasNextByte()) buffer[ptr++].toInt() else -1
    }

    private fun skipUnprintable() {
        while (hasNextByte() && !isPrintableChar(buffer[ptr].toInt())) ptr++
    }

    operator fun hasNext(): Boolean {
        skipUnprintable()
        return hasNextByte()
    }

    fun nextInt(): Int {
        if (!hasNext()) throw NoSuchElementException()
        var n = 0
        var minus = false
        var b = readByte()
        if (b == '-'.toInt()) {
            minus = true
            b = readByte()
        }
        if (b < '0'.toInt() || '9'.toInt() < b) {
            throw NumberFormatException()
        }
        while (true) {
            if ('0'.toInt() <= b && b <= '9'.toInt()) {
                n *= 10
                n += b - '0'.toInt()
            } else return if (b == -1 || !isPrintableChar(b)) {
                if (minus) -n else n
            } else {
                throw NumberFormatException()
            }
            b = readByte()
        }
    }

    companion object {
        private fun isPrintableChar(c: Int): Boolean {
            return c in 33..126
        }
    }
}


Measured memory_bytes: 34480