import java.io.File;
import java.io.PrintStream;
import java.util.Scanner;


public class P5 {
	public static void main(String[] args) throws Exception {
		PrintStream out = new PrintStream("OUT5.txt");
		Scanner in = new Scanner(new File("DATA5.txt"));
		while (in.hasNextInt()) {
			int height = in.nextInt();
			int width = in.nextInt();
			int[][] depth = new int[width][height];
			int[][] drain = new int[width][height];
			for (int y = 0; y < height; y++) {
				for (int x = 0; x < width; x++) {
					depth[x][y] = in.nextInt();
					if (x == 0 || y == 0 || x == width - 1 || y == height - 1) {
						drain[x][y] = depth[x][y];
					} else {
						drain[x][y] = 51;
					}
				}
			}
			for (int i = 0; i < width * height; i++) {
				boolean changed = false;
				for (int x = 0; x < width; x++) {
					for (int y = 0; y < height; y++) {
						if (x > 0 && drain[x - 1][y] < drain[x][y] && drain[x - 1][y] >= depth[x][y]) {
							drain[x][y] = drain[x - 1][y];
							changed = true;
						} else if (y > 0 && drain[x][y - 1] < drain[x][y] && drain[x][y - 1] >= depth[x][y]) {
							drain[x][y] = drain[x][y - 1];
							changed = true;
						} else if (x < width - 1 && drain[x + 1][y] < drain[x][y] && drain[x + 1][y] >= depth[x][y]) {
							drain[x][y] = drain[x + 1][y];
							changed = true;
						} else if (y < height - 1 && drain[x][y + 1] < drain[x][y] && drain[x][y + 1] >= depth[x][y]) {
							drain[x][y] = drain[x][y + 1];
							changed = true;
						}
					}
				}
				if (!changed) break;
			}
			int volume = 0;
			for (int x = 0; x < width; x++) {
				for (int y = 0; y < height; y++) {
					volume += drain[x][y] - depth[x][y];
				}
			}
			out.println(volume);
			out.flush();
		}
		out.close();
	}
}

