#ifndef ONLINE_JUDGE
#pragma GCC optimize(2)
#pragma GCC optimize(3)
#pragma GCC optimize("Ofast")
#endif
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define endl '/n'
#define pair<int,int> pii
int n,m,f[55][1<<9][1<<9],f1[55][1<<9][1<<9],ans=0x3f3f3f3f,sum=0x3f3f3f3f,a[55][55];
int get(int i,int x)
{
int sum=0,t=0;
while(x)
{
t++;
if(x%2==1)sum+=a[i][t];
x=x/2;
}
return sum;
}
int get2(int x)
{
int sum=0,t=0;
while(x)
{
t++;
if(x%2==1)sum++;
x=x/2;
}return sum;
}
int main()
{
ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
cin>>n>>m;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
cin>>a[i][j];
memset(f,0x3f,sizeof f);
for(int i=0;i<(1<<m);i++) f[1][0][i]=get(1,i),f1[1][0][i]=get2(i);
for(int i=2;i<=n;i++)
for(int j=0;j<(1<<m);j++)
for(int k=0;k<(1<<m);k++)
{
if(f[i-1][j][k]==0x3f3f3f3f) continue;
for(int l=0;l<(1<<m);l++)
{
if((j|k|l|(k<<1)|(k>>1))&((1<<m)-1)==((1<<m)-1))
{
if(f[i][k][l]>f[i-1][j][k]+get(i,l))
{
f[i][k][l]=f[i-1][j][k]+get(i,l);
f1[i][k][l]=f1[i-1][j][k]+get2(l);
}
else if(f[i][k][l]==f[i-1][j][k]+get(i,l))
{
f1[i][k][l]=min(f1[i][k][l],f1[i-1][j][k]+get2(l));
}
}
}
}
for(int i=0;i<(1<<m);i++)
for(int j=0;j<(1<<m);j++)
{
if((i|j|(j>>1)|(j<<1)&((1<<m)-1))==((1<<m)-1))
{
if(ans>f[n][i][j])
{
ans=f[n][i][j];
sum=f1[n][i][j];
}
else if(ans==f[n][i][j])sum=min(sum,f1[n][i][j]);
}
}
cout<<sum<<" "<<ans;
return 0;
}