#include<bits/stdc++.h>
using namespace std;
int ma[1001][1001],mi[1001][1001],n,logn;
int query(int x,int y){
int xx=x+n,yy=y+n,k=log2(n);
return max(max(ma[x][y],ma[xx-(1<<k)+1][yy-(1<<k)+1]),max(ma[xx-(1<<k)+1][y],ma[x][yy-(1<<k)+1]))-min(min(mi[x][y],mi[xx-(1<<k)+1][yy-(1<<k)+1]),min(mi[xx-(1<<k)+1][y],mi[x][yy-(1<<k)+1]));
}
int main(){
int a,b,num,ans=2147483647;cin>>a>>b>>n;
for(int i=1;i<=a;i++){
for(int j=1;j<=b;j++){
scanf("%d",&num);ma[i][j]=mi[i][j]=num;
}
}
for(int k=1;(1<<k)<=n;k++){
for(int i=1;i+(1<<k)<a;i++){
for(int j=1;j+(1<<k)<b;j++){
ma[i][j]=max(max(ma[i+(1<<(k-1))][j],ma[i][j+(1<<(k-1))]),max(ma[i][j],ma[i+(1<<(k-1))][j+(1<<(k-1))]));
mi[i][j]=min(min(mi[i+(1<<(k-1))][j],mi[i][j+(1<<(k-1))]),min(mi[i][j],mi[i+(1<<(k-1))][j+(1<<(k-1))]));
}
}
}
for(int i=1;i+n-1<=a;i++){
for(int j=1;j+n-1<=b;j++){
ans=min(ans,query(i,j));
}
}cout<<ans;
return 0;
}