$g = []
$m = {}

def filled? x1, y1, x2, y2
  case
  when f = $m[[x1, y1, x2, y2]]
    return f
  when x1 > x2 || y1 > y2
    return true
  when x1 == x2 && y1 == y2
    return $g[y1][x1]
  else
    f = filled?(x1 + 1, y1, x2, y2) &&
        filled?(x1, y1 + 1, x2, y2) &&
        filled?(x1, y1, x2 - 1, y2) &&
        filled?(x1, y1, x2, y2 - 1)
    return $m[[x1, y1, x2, y2]] = f
  end
end

while (h, w = gets.split.map(&:to_i)) != [0, 0]
  $g = []
  $m = {}
  h.times do
    s = gets.chop.chars.map{|c|c==?.}
    $g << s
  end
  s = []
  (0...w).each do |x|
    (0...h).each do |y|
      (x...w).each do |a|
        (y...h).each do |b|
          if filled? x, y, a, b
            s << ((a - x + 1)*(b - y + 1))
          end
        end
      end
    end
  end
  p s.max
end