Given an MxN matrix filled with
The first line of input will be containing two space-separated integers, denoting M and N.
The next M lines will contain N space-separated integers, denoting the elements of the matrix.
The output should be a single line containing the area of the maximum square.
def max_square(matrix):
    M, N = len(matrix), len(matrix[0]),
    arr = [[0 for _ in range(N + 1)] for _ in range(M + 1)]
    side_length = 0
    for i in range(1, len(arr)):
        for j in range(1, len(arr[0])):
            if matrix[i - 1][j - 1] == "X":
                arr[i][j] = min(arr[i][j - 1], arr[i - 1][j], arr[i - 1][j - 1]) + 1
                side_length = max(side_length, arr[i][j])
    return side_length * side_length
def parse_matrix():
    M, N = map(int, input().split())
    matrix = [input().split() for _ in range(M)]
    return matrix
matrix = parse_matrix()
print(max_square(matrix))
Comments