Buggy python submission (verdict: Time Limit Exceeded):
import sys
import math
import fractions
import bisect
import queue
import heapq
import collections
import itertools
sys.setrecursionlimit(4100000)

MOD = int(1e9+7)
PI = 3.14159265358979323846264338327950288
INF = 1e18

'''
1行のint=====================================
N, K = map(int, input().split())
N, M = map(int, input().split())
A, B = map(int, input().split())

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

L, R = map(int, input().split())

1行のstring=================================
S, T = input().split()

1行の整数配列================================
P = list(map(int,input().split()))

A = list(map(int,input().split()))
B = list(map(int,input().split()))
C = list(map(int,input().split()))
D = list(map(int,input().split()))

L = list(map(int,input().split()))
R = list(map(int,input().split()))

T = list(map(int,input().split()))

改行あり整数==================================
X = []
Y = []
for i in range(N):
    x1,y1=[int(i) for i in input().split()]
    X.append(x1)
    Y.append(y1)

A = []
for i in range(N):
    a=int(input())
    A.append(a)

Pair = []
for i in range(N):
    x1,y1=[int(i) for i in input().split()]
    Pair.append((x1, y1))
    
2次元整数配列=====================================
A = []
for i in range(N):
    tmp = list(map(int,input().split()))
    A.append(tmp)


N行M列の初期化====================================
dp = [[VAL] * RETU for i in range(GYO)]

'''



H, W = map(int, input().split())
S = []
for i in range(H):
    a=input()
    S.append(a)

# その方向に照らせる個数
right = [[0] * W for i in range(H)]
left = [[0] * W for i in range(H)]
up = [[0] * W for i in range(H)]
down = [[0] * W for i in range(H)]


for h in range(0, H):
    for w in range(1, W):

        if S[h][w-1] == "#" or S[h][w] == "#":
            left[h][w] = 0
        else:
            left[h][w] = left[h][w-1] + 1


for h in range(0, H):
    for w in range(W-2, -1, -1):
        if S[h][w+1] == "#" or S[h][w] == "#":
            right[h][w] = 0
        else:
            right[h][w] = right[h][w+1] + 1

for h in range(1, H):
    for w in range(0, W):
        if S[h-1][w] == "#" or S[h][w] == "#":
            up[h][w] = 0
        else:
            up[h][w] = up[h-1][w] + 1

for h in range(H-2, -1, -1):
    for w in range(0, W):
        if S[h+1][w] == "#" or S[h][w] == "#":
            down[h][w] = 0
        else:
            down[h][w] = down[h+1][w] + 1

ans = 0
for h in range(H):
    for w in range(W):
        
        if S[h][w] == "#":
            continue

        ans = max(ans, right[h][w] + left[h][w] + up[h][w] + down[h][w] + 1)

print(ans)




Fixed submission:
import sys
import math
import fractions
import bisect
import queue
import heapq
import collections
import itertools
sys.setrecursionlimit(4100000)

MOD = int(1e9+7)
PI = 3.14159265358979323846264338327950288
INF = 1e18

'''
1行のint=====================================
N, K = map(int, input().split())
N, M = map(int, input().split())
A, B = map(int, input().split())

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

L, R = map(int, input().split())

1行のstring=================================
S, T = input().split()

1行の整数配列================================
P = list(map(int,input().split()))

A = list(map(int,input().split()))
B = list(map(int,input().split()))
C = list(map(int,input().split()))
D = list(map(int,input().split()))

L = list(map(int,input().split()))
R = list(map(int,input().split()))

T = list(map(int,input().split()))

改行あり整数==================================
X = []
Y = []
for i in range(N):
    x1,y1=[int(i) for i in input().split()]
    X.append(x1)
    Y.append(y1)

A = []
for i in range(N):
    a=int(input())
    A.append(a)

Pair = []
for i in range(N):
    x1,y1=[int(i) for i in input().split()]
    Pair.append((x1, y1))
    
2次元整数配列=====================================
A = []
for i in range(N):
    tmp = list(map(int,input().split()))
    A.append(tmp)


N行M列の初期化====================================
dp = [[VAL] * RETU for i in range(GYO)]

'''



H, W = map(int, input().split())
S = []
for i in range(H):
    a=input()
    S.append(a)

# その方向に照らせる個数
right = [[0] * W for i in range(H)]
left = [[0] * W for i in range(H)]
up = [[0] * W for i in range(H)]
down = [[0] * W for i in range(H)]


for h in range(0, H):
    for w in range(1, W):

        if S[h][w-1] == "#" or S[h][w] == "#":
            left[h][w] = 0
        else:
            left[h][w] = left[h][w-1] + 1


for h in range(0, H):
    for w in range(W-2, -1, -1):
        if S[h][w+1] == "#" or S[h][w] == "#":
            right[h][w] = 0
        else:
            right[h][w] = right[h][w+1] + 1

for h in range(1, H):
    for w in range(0, W):
        if S[h-1][w] == "#" or S[h][w] == "#":
            up[h][w] = 0
        else:
            up[h][w] = up[h-1][w] + 1

for h in range(H-2, -1, -1):
    for w in range(0, W):
        if S[h+1][w] == "#" or S[h][w] == "#":
            down[h][w] = 0
        else:
            down[h][w] = down[h+1][w] + 1

ans = 0
for h in range(H):
    for w in range(W):
        
        if S[h][w] == "#":
            continue

        ans = max(ans, right[h][w] + left[h][w] + up[h][w] + down[h][w] + 1)

print(ans)