H, W = map(int, input().split())
s, ans = [], 0
# dpr, dpl, dpd, dpu = {},{},{},{}
#dpr, dpl, dpd, dpu = [0]*W,[0]*W,[0]*H,[0]*H
#dpr, dpl, dpd, dpu = [None]*W,[None]*W,[None]*H,[None]*H
dpr = [[None] * W for _ in range(W)]
dpl = [[None] * W for _ in range(W)]
dpd = [[None] * W for _ in range(W)]
dpu = [[None] * W for _ in range(W)]

for i in range(H):
    s.append(input())

def getCount(h, w):
    if s[h][w] == '#':
        return 0
    rcnt, lcnt, dcnt, ucnt = 0,0,0,0

    # to right
    if w > 0 and s[h][w-1] == '.' and s[h][w] == '.' and dpr[h][w-1] is not None:
        dpr[h][w] = dpr[h][w-1] - 1
    else:
        for i in range(w+1, W):
            if s[h][i] == '.':
                if dpr[h][i] is not None:
                    rcnt += dpr[h][i] + 1
                    break
                else:
                    rcnt += 1
            else:
                break
    dpr[h][w] = rcnt

    # to left
    for i in reversed(range(w)):
        if s[h][i] == '.':
            if dpl[h][i] is not None:
                lcnt += dpl[h][i] + 1
                break
            else:
                lcnt += 1
        else:
            break
    dpl[h][w] = lcnt

    # to down
    if h > 0 and s[h-1][w] == '.' and s[h][w] == '.' and dpr[h-1][w] is not None:
        dpr[h][w] = dpr[h-1][w] - 1
    else:
        for i in range(h+1, H):
            if s[i][w] == '.':
                if dpr[i][w] is not None:
                    dcnt += dpd[i][w] + 1
                    break
                else:
                    dcnt += 1
            else:
                break
    dpd[h][w] = dcnt

    # to up
    for i in reversed(range(h)):
        if s[i][w] == '.':
            if dpr[i][w] is not None:
                ucnt += dpu[i][w] + 1
                break
            else:
                ucnt += 1
        else:
            break
    dpu[h][w] = ucnt

    return rcnt + lcnt + dcnt + ucnt + 1

for i in reversed(range(H)):
    for j in reversed(range(W)):
        ans = max(ans, getCount(i, j))

print(ans)


### FIXED CODE ###

H, W = map(int, input().split())
s, ans = [], 0
dpr = [[0] * W for _ in range(H)]
dpl = [[0] * W for _ in range(H)]
dpd = [[0] * W for _ in range(H)]
dpu = [[0] * W for _ in range(H)]

for i in range(H):
    s.append(input())

# to right
for i in range(H):
    for j in reversed(range(W)):
        if j == W-1 and s[i][j] == '.':
            dpr[i][j] = 1
        elif s[i][j] == '#':
            dpr[i][j] = 0
        else:
            dpr[i][j] = dpr[i][j+1] + 1

# to left
for i in range(H):
    for j in range(0, W):
        if j == 0 and s[i][j] == '.':
            dpl[i][j] = 1
        elif s[i][j] == '#':
            dpl[i][j] = 0
        else:
            dpl[i][j] = dpl[i][j-1] + 1

# to down
for i in reversed(range(H)):
    for j in range(W):
        if i == H-1 and s[i][j] == '.':
            dpd[i][j] = 1
        elif s[i][j] == '#':
            dpd[i][j] = 0
        else:
            dpd[i][j] = dpd[i+1][j] + 1

# to up
for i in range(0, H):
    for j in range(W):
        if i == 0 and s[i][j] == '.':
            dpu[i][j] = 1
        elif s[i][j] == '#':
            dpu[i][j] = 0
        else:
            dpu[i][j] = dpu[i-1][j] + 1

for i in reversed(range(H)):
    for j in reversed(range(W)):
        cnt = dpr[i][j] + dpl[i][j] + dpd[i][j] + dpu[i][j] - 3
        ans = max(ans, cnt)

print(ans)