MOD=10**9+7
cnt=0; sum=0; prev=nil; can=true; h=Hash.new(0)
def gs() gets.chomp end
def gi() gets.to_i end
def gsmi() gets.chomp.split.map(&:to_i) end

def desc(ar) ar.sort!{|x,y|y<=>x} end
def min(a,b) a<=b ? a : b end
def max(a,b) a>=b ? a : b end
def sum(ar) ar.inject(:+) end

def C(a,b) b==0||a==b ? 1 : (b=a-b if a/2<b;(a-b+1..a).inject(:*)/(1..b).inject(:*)) end

def puts_yesno(can) puts(can ? 'Yes' : 'No') end
def putsend(s) puts s; exit end
def debug(k,v) puts "#{k}:#{v}" end
########### ( ˘ω˘ )ｽﾔｧ… ###########

h, w = gsmi
ss = h.times.map{|i| gets.chars}
trans_ss = ss.transpose

tower = '#'
none = '.'

# i,jの横距離
dist_arr = Array.new(h,0).map{Array.new(w,0)}
0.upto(h-1) do |i|
  line = ss[i]
  dist = 0
  j = 0
  while(j<w) do
    if line[j]==none
      dist+=1
    else
      1.upto(dist) do |dd|
        dist_arr[i][j-dd] = dist
      end
      dist_arr[i][j] = 0
      dist = 0
    end
    j+=1
  end

  1.upto(dist) do |dd|
    dist_arr[i][w-dd] = dist
  end
end

# i,jの縦距離
dist_v_arr = Array.new(w,0).map{Array.new(h,0)}
0.upto(w-1) do |i|
  line = trans_ss[i]
  dist = 0
  j = 0
  while(j<h) do
    if line[j]==none
      dist+=1
    else
      1.upto(dist) do |dd|
        dist_v_arr[i][j-dd] = dist
      end
      dist_v_arr[i][j] = 0
      dist = 0
    end
    j+=1
  end

  1.upto(dist) do |dd|
    dist_v_arr[i][h-dd] = dist
  end
end
# puts dist_arr.to_s
# puts dist_v_arr.transpose.to_s

puts dist_arr.flatten.zip(dist_v_arr.transpose.flatten).map{|x,y|x+y}.max - 1

# max = 0
# 0.upto(h-1) do |i|
#   0.upto(w-1) do |j|
#     total = dist_arr[i][j] + dist_v_arr[j][i] - 1
#     if max < total
#       max = total
#     end
#   end
# end

# puts max
