#include<bits/stdc++.h>
using namespace std;
#define int long long
int n,m,c;
int a[1005][1005];
deque<int>d;
int ma[10][1005][1005];
int mi[10][1005][1005];
int ans=INT_MAX;
signed main(){
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin>>n>>m>>c;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
cin>>a[i][j];
for(int i=1;i<=n;i++){
while(!d.empty())d.pop_back();
for(int j=1;j<=m;j++){
while(!d.empty()&&a[i][d.back()]<a[i][j])d.pop_back();
if(!d.empty()&&d.front()==j-c)d.pop_front();
d.push_back(j);
if(j>=c)ma[0][i][j]=a[i][d.front()];
}
}
for(int i=1;i<=n;i++){
while(!d.empty())d.pop_back();
for(int j=1;j<=m;j++){
while(!d.empty()&&a[i][d.back()]>a[i][j])d.pop_back();
if(!d.empty()&&d.front()==j-c)d.pop_front();
d.push_back(j);
if(j>=c)mi[0][i][j]=a[i][d.front()];
}
}
for(int j=1;j<=m;j++){
while(!d.empty())d.pop_back();
for(int i=1;i<=n;i++){
while(!d.empty()&&a[d.back()][j]<a[i][j])d.pop_back();
if(!d.empty()&&d.front()==i-c)d.pop_front();
d.push_back(i);
if(i>=c)ma[1][i][j]=a[d.front()][j];
}
}
for(int j=1;j<=m;j++){
while(!d.empty())d.pop_back();
for(int i=1;i<=n;i++){
while(!d.empty()&&a[d.back()][j]>a[i][j])d.pop_back();
if(!d.empty()&&d.front()==i-c)d.pop_front();
d.push_back(i);
if(i>=c)mi[1][i][j]=a[d.front()][j];
}
}
for(int i=c;i<=n;i++){
for(int j=c;j<=m;j++){
for(int k=j;k<=j+c-1;k++){
ma[2][i][j]=max(ma[2][i][j],ma[1][i][k]);
mi[2][i][j]=min(mi[2][i][j],mi[1][i][k]);
}
}
}
for(int j=c;j<=m;j++){
for(int i=c;i<=n;i++){
for(int k=i;k<=i+c-1;k++){
ma[2][i][j]=max(ma[2][i][j],ma[1][k][j]);
mi[2][i][j]=min(mi[2][i][j],mi[1][k][j]);
}
}
}
for(int i=c;i<=n;i++){
for(int j=c;j<=m;j++){
ans=min(ans,ma[2][i][j]-mi[2][i][j]);
}
}
cout<<ans;
return 0;
}