#include<bits/stdc++.h>
using namespace std;
int A[20][20],f[20][20];
int ls[20][20],la[20],g[20];
int n,m,r,c,ans=0x7fffffff;
int DP(){
memset(f,127,sizeof(f));
for(int i=2;i<=n;i++){
for(int j=1;j<i;j++){
ls[i][j]=0;
for(int k=1;k<=c;k++)
ls[i][j]+=abs(A[i][g[k]]-A[j][g[k]]);
}
}
for(int i=1;i<=n;i++){
la[i]=0;
for(int j=2;j<=c;j++)
la[i]+=abs(A[i][g[j-1]]-A[i][g[j]]);
}
for(int i=1;i<=n;i++)
for(int j=1;j<=min(i,r);j++){
if(j==1)
f[i][j]=la[i];
else if(i==j)
f[i][j]=f[i-1][j-1]+la[i]+ls[i][j-1];
else
for(int k=j-1;k<i;k++)
f[i][j]=min(f[i][j],f[k][j-1]+la[i]+ls[i][k]);
}
int ret=0x7fffffff;
for(int i=1;i<=n;i++)
ret=min(ret,f[i][r]);
return ret;
}
void DFS(int n_,int m_){
if(n_==n&&m_==c){
ans=min(ans,DP());
}
if(n_<n){
if(m_<c){
g[m_+1]=n_+1;
DFS(n_+1,m_+1);
g[m_+1]=0;
}
DFS(n_+1,m_);
}
}
int main(){
cin>>n>>m>>r>>c;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
cin>>A[i][j];
DFS(0,0);
cout<<ans;
}