def largest_rectangle(hs):
    stack = []
    i = m = 0

    while i < len(hs) or stack:
        if i == len(hs) or (stack and hs[stack[-1]] > hs[i]):
            h = hs[stack.pop()]
            s = 0 if not stack else stack[-1] + 1
            x = min(h, i - s)
            m = max(m, x * x)
            continue
        stack.append(i)
        i += 1
    return m

inp = """X--X-
-----
-----
-----
---X-"""

grid = list(map(list, inp.split('\n')))
r = [0 for _ in grid[0]]
largest = 0
for row in grid:
    r = [(1 + h) if el == '-' else 0 for h, el in zip(r, row)]
    largest = max(largest, largest_rectangle(r))

print(largest)
