import java.util.Scanner;
public class Main {
static int r, c;
static int[][] height;
static int[] dx = {1, -1, 0, 0};
static int[] dy = {0, 0, 1, -1};
static int ans = 0;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
r = sc.nextInt();
c = sc.nextInt();
height = new int[r][c];
for (int i = 0; i < r; i++) {
for (int j = 0; j < c; j++) {
height[i][j] = sc.nextInt();
}
}
for (int i = 0; i < r; i++) {
for (int j = 0; j < c; j++) {
boolean[][] vis = new boolean[r][c];
vis[i][j] = true;
dfs(i, j, vis, 1);
}
}
System.out.println(ans);
}
public static void dfs(int x, int y, boolean[][] vis, int len) {
for (int i = 0; i < 4; i++) {
int xx = dx[i] + x;
int yy = dy[i] + y;
if (xx >= 0 && xx < r && yy >= 0 && yy < c && !vis[xx][yy]) {
int val = height[x][y] - height[xx][yy];
if (val > 0) {
len += 1;
vis[xx][yy] = true;
ans = Math.max(ans, len);
dfs(xx, yy, vis, len);
vis[xx][yy] = false;
len -= 1;
}
}
}
}
}