#include <bits/stdc++.h>
#define int long long
using namespace std;
const int N = 55, INF = 4e18;
int n, m, pf[N][N], dp[N][N][N][N];
signed main(){
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cin >> n >> m;
for(int i = 1;i<=n;i++){
for(int j = 1;j<=m;j++){
cin >> pf[i][j];
pf[i][j] += pf[i - 1][j] + pf[i][j - 1] - pf[i - 1][j - 1];
}
}
for(int ln1 = 1;ln1<=n;ln1++){
for(int l1 = 1;l1 + ln1 - 1<=n;l1++){
int r1 = l1 + ln1 - 1;
for(int ln2 = 1;ln2<=m;ln2++){
for(int l2 = 1;l2 + ln2 - 1<=m;l2++){
int r2 = l2 + ln2 - 1;
dp[l1][r1][l2][r2] = INF;
if(l1 == r1 && l2 == r2) dp[l1][r1][l2][r2] = 0;
for(int k = l1;k<r1;k++){
dp[l1][r1][l2][r2] = min(dp[l1][r1][l2][r2], dp[l1][k][l2][r2] + dp[k + 1][r1][l2][r2] + (pf[r1][r2] - pf[r1][l2 - 1] - pf[l1 - 1][r2] + pf[l1 - 1][l2 - 1]));
}
for(int k = l2;k<r2;k++){
dp[l1][r1][l2][r2] = min(dp[l1][r1][l2][r2], dp[l1][r1][l2][k] + dp[l1][r1][k + 1][r2] + (pf[r1][r2] - pf[r1][l2 - 1] - pf[l1 - 1][r2] + pf[l1 - 1][l2 - 1]));
}
}
}
}
}
cout << dp[1][n][1][m];
}