#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

// Kiểm tra hình vuông kích thước size tại vị trí (x, y)
bool isSquare(const vector<vector<int>>& mat, int x, int y, int size, int value) {
    for (int i = x; i < x + size; ++i) {
        for (int j = y; j < y + size; ++j) {
            if (mat[i][j] != value) return false;
        }
    }
    return true;
}

int main() {
    int m, n;
    cin >> m >> n;

    vector<vector<int>> mat(m, vector<int>(n));

    // Nhập ma trận
    for (int i = 0; i < m; ++i) {
        for (int j = 0; j < n; ++j) {
            cin >> mat[i][j];
        }
    }

    int maxSize = 0;

    // Kiểm tra từng ô (brute force)
    for (int i = 0; i < m; ++i) {
        for (int j = 0; j < n; ++j) {
            for (int size = 1; i + size <= m && j + size <= n; ++size) {
                if (isSquare(mat, i, j, size, mat[i][j])) {
                    maxSize = max(maxSize, size);
                } else {
                    break;
                }
            }
        }
    }

    cout << maxSize * maxSize << endl;

    return 0;
}