#include<bits/stdc++.h>
using namespace std;
const int N= 1e3+9;
int q[N];
int hh,tt;
int mx[N][N];
int mxi[N][N],mxa[N][N];
int res,idx,cnt;
int mxxi[N][N];
int mxxa[N][N];
int a,b,n;
signed main()
{
    res= INT_MAX;
    scanf("%d%d%d",&a,&b,&n);
    for(int i=1;i<=a;i++)
    {
        for(int j= 1;j<=b;j++)
        {
            scanf("%d",&mx[i][j]);
        }
    }
    
    for(int i=1;i<=a;i++)
    {
        cnt=0;
        hh=0;
        tt=-1;
        for(int j=1 ;j<=b;j++)
        {
            if(q[hh]<j-n+1)hh++;
            if(hh<=tt&&mx[i][q[tt]]<mx[i][j])tt--;
            q[++tt]= j;
            if(j>=n)mxa[i][++cnt]=mx[i][q[hh]];
        }
    }
    
    for(int i=1;i<=a;i++)
    {
        cnt=0;
        hh=0;
        tt=-1;
        for(int j=1 ;j<=b;j++)
        {
            if(q[hh]<j-n+1)hh++;
            if(hh<=tt&&mx[i][q[tt]]>mx[i][j])tt--;
            q[++tt]= j;
            if(j>=n)mxi[i][++cnt]=mx[i][q[hh]];
        }
    }
    
    for(int j=1;j<=cnt;j++)
    {
        idx= 0;
        hh=0;
        tt=-1;
        for(int i=1;i<=a;i++)
        {
            if(q[hh]<i-n+1)hh++;
            if(hh<=tt&&mxi[q[tt]][j]>mxi[i][j])tt--;
            q[++tt]= i;
            if(i>=n)
            {
                mxxi[++idx][j]=mxi[q[hh]][j];
                
                
            }
        }
        
    }
    
    for(int j=1;j<=cnt;j++)
    {
        hh=0;
        tt=-1;
        idx=0;
        for(int i=1;i<=a;i++)
        {
            if(q[hh]<i-n+1)hh++;
            if(hh<=tt&&mxa[q[tt]][j]<mxa[i][j])tt--;
            q[++tt]= i;
            if(i>=n)
            {
                
                mxxa[++idx][j]= mxa[q[hh]][j];
                
            }
        }
        
    }
    for(int i=1;i<=idx;i++)
    {
        for(int j=1;j<=cnt;j++)
        {
            
            res= min(res, mxxa[i][j]-mxxi[i][j]);
        }
        
    }
    printf("%d",res) ;
}