int@n,@m,@d[n][m];
sortA(m,d[0..n-1]);
int l=-1,h=1d9+1,k;
while(l+1<h){
	k=l+h>>1;
	VI u(m,1);
	rep(y,1,n){
		VI v(m);
		int w=0;
		rep(x,m){
			if(u[x]){
				while(w<m&&d[y][w]<d[y-1][x]){
					++w;
				}
				while(w<m&&d[y][w]-d[y-1][x]<=k){
					v[w]=1;
					++w;
				}
			}
		}
		u=v;
	}
	if(max(u(m))){
		h=k;
	}else{
		l=k;
	}
}
wt(h>1d9?-1:h);