# import sys

# sys.setrecursionlimit(10 ** 6)

# import bisect

# from collections import deque

# from decorator import stop_watch

# 

# 

# @stop_watch

def solve(H, W, Si):

    Si = ['#' * (W + 2)] + ['#' + S + '#' for S in Si] + ['#' * (W + 2)]

    lamp_map = [[[-1, -1] for _ in range(W + 2)] for _ in range(H + 2)]

    ans = 0

    for h in range(1, H + 2):

        for w in range(1, W + 2):

            # block

            if Si[h][w] == '#':

                lamp_map[h][w][0] = 0

                lamp_map[h][w][1] = 0

                continue

            # vertical

            if lamp_map[h - 1][w][0] > 0:

                lamp_map[h][w][0] = lamp_map[h - 1][w][0]

            else:

                tmp = 0

                while Si[h + tmp][w] == '.':

                    tmp += 1

                lamp_map[h][w][0] = tmp

            # horizon

            if lamp_map[h][w - 1][1] > 0:

                lamp_map[h][w][1] = lamp_map[h][w - 1][1]

            else:

                tmp = 0

                while Si[h][w + tmp] == '.':

                    tmp += 1

                lamp_map[h][w][1] = tmp

            ans = max(ans, sum(lamp_map[h][w]) - 1)

    print(ans)





if __name__ == '__main__':

    H, W = list(map(int, input().split()))

    Si = [eval(input()) for _ in range(H)]



    # # test

    # import func

    # H, W = 2000, 2000

    # Si = [''.join([func.random_str(W, '.')]) for _ in range(H)]

    # for s in Si:

    #     print(s)

    solve(H, W, Si)

# 解説を参考に作成

# import sys

# sys.setrecursionlimit(10 ** 6)

# import bisect

# from collections import deque

# from decorator import stop_watch

# 

# 

# @stop_watch

def solve(H, W, Si):

    R = [[0] * W for _ in range(H)]

    L = [[0] * W for _ in range(H)]

    D = [[0] * W for _ in range(H)]

    U = [[0] * W for _ in range(H)]



    # for R

    for h in range(H):

        for w in range(W):

            if Si[h][w] == '#':

                R[h][w] = 0

                continue

            if w == 0:

                R[h][w] = 1

            else:

                R[h][w] = R[h][w - 1] + 1

    # for L

    for h in range(H):

        for w in range(W):

            if Si[h][W - w - 1] == '#':

                L[h][W - w - 1] = 0

                continue

            if w == 0:

                L[h][W - w - 1] = 1

            else:

                L[h][W - w - 1] = L[h][W - w] + 1

    # for D

    for w in range(W):

        for h in range(H):

            if Si[h][w] == '#':

                D[h][w] = 0

                continue

            if h == 0:

                D[h][w] = 1

            else:

                D[h][w] = D[h - 1][w] + 1

    # for U

    for w in range(W):

        for h in range(H):

            if Si[H - h - 1][w] == '#':

                U[H - h - 1][w] = 0

                continue

            if h == 0:

                U[H - h - 1][w] = 1

            else:

                U[H - h - 1][w] = U[H - h][w] + 1



    ans = 0

    for h in range(H):

        for w in range(W):

            ans = max(ans, R[h][w] + L[h][w] + D[h][w] + U[h][w] - 3)

    print(ans)





if __name__ == '__main__':

    H, W = list(map(int, input().split()))

    Si = [eval(input()) for _ in range(H)]



    # # test

    # import func

    # H, W = 2000, 2000

    # Si = [''.join([func.random_str(W, '.')]) for _ in range(H)]

    # for s in Si:

    #     print(s)

    solve(H, W, Si)

# import sys
# sys.setrecursionlimit(10 ** 6)
# import bisect
# from collections import deque
# from decorator import stop_watch
#
#
# @stop_watch
def solve(H, W, Si):
    Si = ["#" * (W + 2)] + ["#" + S + "#" for S in Si] + ["#" * (W + 2)]
    lamp_map = [[[-1, -1] for _ in range(W + 2)] for _ in range(H + 2)]
    ans = 0
    for h in range(1, H + 2):
        for w in range(1, W + 2):
            # block
            if Si[h][w] == "#":
                lamp_map[h][w][0] = 0
                lamp_map[h][w][1] = 0
                continue
            # vertical
            if lamp_map[h - 1][w][0] > 0:
                lamp_map[h][w][0] = lamp_map[h - 1][w][0]
            else:
                tmp = 0
                while Si[h + tmp][w] == ".":
                    tmp += 1
                lamp_map[h][w][0] = tmp
            # horizon
            if lamp_map[h][w - 1][1] > 0:
                lamp_map[h][w][1] = lamp_map[h][w - 1][1]
            else:
                tmp = 0
                while Si[h][w + tmp] == ".":
                    tmp += 1
                lamp_map[h][w][1] = tmp
            ans = max(ans, sum(lamp_map[h][w]) - 1)
    print(ans)


if __name__ == "__main__":
    H, W = list(map(int, input().split()))
    Si = [eval(input()) for _ in range(H)]
    # # test
    # import func
    # H, W = 2000, 2000
    # Si = [''.join([func.random_str(W, '.')]) for _ in range(H)]
    # for s in Si:
    #     print(s)
    solve(H, W, Si)

# 解説を参考に作成
# import sys
# sys.setrecursionlimit(10 ** 6)
# import bisect
# from collections import deque
# from decorator import stop_watch
#
#
# @stop_watch
def solve(H, W, Si):
    R = [[0] * W for _ in range(H)]
    L = [[0] * W for _ in range(H)]
    D = [[0] * W for _ in range(H)]
    U = [[0] * W for _ in range(H)]
    # for R
    for h in range(H):
        for w in range(W):
            if Si[h][w] == "#":
                R[h][w] = 0
                continue
            if w == 0:
                R[h][w] = 1
            else:
                R[h][w] = R[h][w - 1] + 1
    # for L
    for h in range(H):
        for w in range(W):
            if Si[h][W - w - 1] == "#":
                L[h][W - w - 1] = 0
                continue
            if w == 0:
                L[h][W - w - 1] = 1
            else:
                L[h][W - w - 1] = L[h][W - w] + 1
    # for D
    for w in range(W):
        for h in range(H):
            if Si[h][w] == "#":
                D[h][w] = 0
                continue
            if h == 0:
                D[h][w] = 1
            else:
                D[h][w] = D[h - 1][w] + 1
    # for U
    for w in range(W):
        for h in range(H):
            if Si[H - h - 1][w] == "#":
                U[H - h - 1][w] = 0
                continue
            if h == 0:
                U[H - h - 1][w] = 1
            else:
                U[H - h - 1][w] = U[H - h][w] + 1
    ans = 0
    for h in range(H):
        for w in range(W):
            ans = max(ans, R[h][w] + L[h][w] + D[h][w] + U[h][w] - 3)
    print(ans)


if __name__ == "__main__":
    H, W = list(map(int, input().split()))
    Si = [eval(input()) for _ in range(H)]
    # # test
    # import func
    # H, W = 2000, 2000
    # Si = [''.join([func.random_str(W, '.')]) for _ in range(H)]
    # for s in Si:
    #     print(s)
    solve(H, W, Si)

+# 解説を参考に作成 -    Si = ["#" * (W + 2)] + ["#" + S + "#" for S in Si] + ["#" * (W + 2)] -    lamp_map = [[[-1, -1] for _ in range(W + 2)] for _ in range(H + 2)] +    R = [[0] * W for _ in range(H)] +    L = [[0] * W for _ in range(H)] +    D = [[0] * W for _ in range(H)] +    U = [[0] * W for _ in range(H)] +    # for R +    for h in range(H): +        for w in range(W): +            if Si[h][w] == "#": +                R[h][w] = 0 +                continue +            if w == 0: +                R[h][w] = 1 +            else: +                R[h][w] = R[h][w - 1] + 1 +    # for L +    for h in range(H): +        for w in range(W): +            if Si[h][W - w - 1] == "#": +                L[h][W - w - 1] = 0 +                continue +            if w == 0: +                L[h][W - w - 1] = 1 +            else: +                L[h][W - w - 1] = L[h][W - w] + 1 +    # for D +    for w in range(W): +        for h in range(H): +            if Si[h][w] == "#": +                D[h][w] = 0 +                continue +            if h == 0: +                D[h][w] = 1 +            else: +                D[h][w] = D[h - 1][w] + 1 +    # for U +    for w in range(W): +        for h in range(H): +            if Si[H - h - 1][w] == "#": +                U[H - h - 1][w] = 0 +                continue +            if h == 0: +                U[H - h - 1][w] = 1 +            else: +                U[H - h - 1][w] = U[H - h][w] + 1 -    for h in range(1, H + 2): -        for w in range(1, W + 2): -            # block -            if Si[h][w] == "#": -                lamp_map[h][w][0] = 0 -                lamp_map[h][w][1] = 0 -                continue -            # vertical -            if lamp_map[h - 1][w][0] > 0: -                lamp_map[h][w][0] = lamp_map[h - 1][w][0] -            else: -                tmp = 0 -                while Si[h + tmp][w] == ".": -                    tmp += 1 -                lamp_map[h][w][0] = tmp -            # horizon -            if lamp_map[h][w - 1][1] > 0: -                lamp_map[h][w][1] = lamp_map[h][w - 1][1] -            else: -                tmp = 0 -                while Si[h][w + tmp] == ".": -                    tmp += 1 -                lamp_map[h][w][1] = tmp -            ans = max(ans, sum(lamp_map[h][w]) - 1) +    for h in range(H): +        for w in range(W): +            ans = max(ans, R[h][w] + L[h][w] + D[h][w] + U[h][w] - 3)