#include<iostream>
#include<cstdio>
using namespace std;
int log (int q){
for(int i=7;i;i--)
if(q>(1<<i))
return i;
return 0;
}
int a,b,n,mp[1010][1010],f1[1010][1010],f2[1010][1010];
int main() {
cin>>a>>b>>n;
for(int i=1;i<=a;i++)
for(int j=1;j<=b;j++){
cin>>mp[i][j];
f1[i][j]=mp[i][j];
f2[i][j]=f1[i][j];
}
for(int k=1;k<=log(n);k++){
for(int i=1;i<=a-(1<<k)+1;i++){
for(int j=1;j<=b-(1<<k)+1;j++){
f1[i][j]=max(f1[i][j],max(f1[i+(1<<k)][j],max(f1[i][j+(1<<k)],f1[i+(1<<k)][j+(1<<k)])));
f2[i][j]=min(f1[i][j],min(f2[i+(1<<k)][j],min(f2[i][j+(1<<k)],f2[i+(1<<k)][j+(1<<k)])));
}
}
}
int ans=0x3fffff,ans1,ans2;
for(int i=1;i<=a-n+1;i++){
for(int j=1;j<=b-n+1;j++){
ans1=max(f1[i][j],max(f1[i+n-(1<<log(n))][j],max(f1[i][j+n-(1<<log(n))],f1[i+n-(1<<log(n))][j+n-(1<<log(n))])));
ans2=min(f1[i][j],min(f2[i+n-(1<<log(n))][j],min(f2[i][j+n-(1<<log(n))],f2[i+n-(1<<log(n))][j+n-(1<<log(n))])));
ans=min(ans,ans1-ans2);
}
}
cout<<ans;
return 0;
}