#include <bits/stdc++.h>
using namespace std ;

#define int long long

int32_t main(){
	int n , m ;
	cin >> n >> m ;
	int a[n][m] ;
	int mn = 101 ;
	for(int i = 0 ; i < n ; i++){
		for(int j = 0 ; j < m ; j++){
			cin >> a[i][j] ;
			mn = min(mn , a[i][j]) ;
		}
	}
	int ans = 0 ;
	for(int i = 0 ; i < n ; i++){
		for(int j = 0 ; j < m ; j++){
			ans += a[i][j] - mn ;
		}
	}
	cout << ans ;
	return 0 ;
}


// Created at 2020/12/19 21:01
// {TODO}WA, {TODO}min
#include <bits/stdc++.h>
//#include <atcoder/all>
#pragma GCC target("avx2")
#pragma GCC optimize("O3")
#pragma GCC optimize("unroll-loops")
#define rep(i, n) for (lint i = 0, i##_len = n; i < i##_len; i++)
#define rep2(i, n) for (lint i = 1, i##_len = n; i <= i##_len; i++)
#define rep3(i, s, e) for (lint i = s, i##_len = e; i < i##_len; i++)
#define all(i) (i).begin(), (i).end()
#define print(s) cout << s << enl;
#define mk_p make_pair
using namespace std;
//using namespace atcoder;
using lint = long long;
using pi = pair<int, int>;
using pl = pair<lint, lint>;
using vi = vector<int>;
using vl = vector<lint>;
using vvi = vector<vi>;
using vvl = vector<vl>;
using qi = queue<int>;
using ql = queue<lint>;
const char enl = '\n';
const int INF = INT_MAX;
const lint INFl = LLONG_MAX;

template<class T>
inline void input(vector<T> &v) {
    for (T &x : v) cin >> x;
}

template<class T>
istream &operator>>(istream &is, vector<T> &vec) {
    for (auto &v : vec) is >> v;
    return is;
}

template<class T>
ostream &operator<<(ostream &os, const vector<T> &vec) {
    os << '[';
    for (auto v : vec) os << v << ',';
    os << ']';
    return os;
}

template<class T>
inline bool chmax(T &a, T b) {
    if (a < b) {
        a = b;
        return true;
    }
    return false;
}

template<class T>
inline bool chmin(T &a, T b) {
    if (b < a) {
        a = b;
        return true;
    }
    return false;
}

// 素数とその個数の pair の vector
template<class T>
vector<pair<T, T>> prime_factorize(T N) {
    vector<pair<T, T>> res;
    // 2 だけ別
    lint ex = 0;  // 指数
    // 割れる限り割り続ける
    while (N % 2 == 0) {
        ++ex;
        N /= 2;
    }

    // その結果を push
    if (ex != 0) res.push_back({2, ex});
    for (lint a = 3; a * a <= N; a += 2) {
        lint ex = 0;  // 指数

        // 割れる限り割り続ける
        while (N % a == 0) {
            ++ex;
            N /= a;
        }

        // その結果を push
        if (ex != 0) res.push_back({a, ex});
    }

    // 最後に残った数について
    if (N != 1) res.push_back({N, 1});
    return res;
}

template<class T>
T gcd(T x, T y) {
    if (x == 0) {
        if (y == 0)
            return 1;
        else
            return y;
    }
    if (y == 0) return x;
    if (x % y == 0)
        return y;
    else
        return gcd(y, x % y);
}

template<class T>
inline T lcm(T x, T y) {
    return x / gcd(x, y) * y;
}

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    // cout << fixed << setprecision(15);
    /*----------------------------------------------------*/
    int h, w;
    cin >> h >> w;
    vvi a(h, vi(w));
    int min = INF;
    rep(i, h) rep(j, w) {
        cin >> a.at(i).at(j);
        chmin(min, a.at(i).at(j));
    }
    int ans = 0;
    rep(i, h) rep(j, w) {
        ans += a.at(i).at(j) - min;
    }

    print(ans);
}

