# include <bits/stdc++.h>
using namespace std;
typedef pair<int,int> pii;
int n,x,y,a[2010][2010],len[2010][2010],ans[2010],f[2010][2010];
pii b[2][2010][50],c[50];
bool vis[3000010];
bool cmp(pii a,pii b){return max(a.first-x,a.second-y)<max(b.first-x,b.second-y);}
int main()
{
	int m;
	cin>>n>>m;
	for(int i=1;i<=n;i++)
		for(int j=1;j<=n;j++)
			scanf("%d",&a[i][j]);
	for(int i=1;i<=n;i++) b[n&1][i][++len[n][i]]=make_pair(n,i),f[n][i]=1;
	for(int i=n-1;i;i--)
		for(int j=n;j;j--)
		{
			f[i][j]=min(f[i+1][j]+1,min(n-i+1,n-j+1));
			b[i&1][j][++len[i][j]]=make_pair(i,j);
			for(int k=1;k<=len[i+1][j];k++) b[i&1][j][++len[i][j]]=b[(i+1)&1][j][k];
			if(j<n)
			{
				f[i][j]=min(f[i][j],min(f[i][j+1],f[i+1][j+1])+1);
				if(f[i+1][j]==f[i][j+1]) b[i&1][j][++len[i][j]]=make_pair(i+f[i+1][j],j+f[i+1][j]);
				for(int k=1;k<=len[i][j+1];k++) b[i&1][j][++len[i][j]]=b[i&1][j+1][k];
				for(int k=1;k<=len[i+1][j+1];k++) b[i&1][j][++len[i][j]]=b[(i+1)&1][j+1][k];
			}
			x=i;y=j;sort(b[i&1][j]+1,b[i&1][j]+len[i][j]+1,cmp);
			int cnt=0,t=0,tot=0;
			for(int k=1;k<=len[i][j] && !t;k++)
			{
				x=b[i&1][j][k].first;y=b[i&1][j][k].second;
				if(!vis[a[x][y]]) vis[a[x][y]]=1,cnt++;
				if(cnt>m) t=k;
			}
			for(int k=1;k<=len[i][j];k++) vis[a[b[i&1][j][k].first][b[i&1][j][k].second]]=0;
			x=i;y=j;
			if(t)
			{
				f[i][j]=min(f[i][j],max(b[i&1][j][t].first-i+1,b[i&1][j][t].second-j+1)-1);
				len[i][j]=t-1;
			}
			for(int k=1;k<=len[i][j];k++)
			{
				x=b[i&1][j][k].first;y=b[i&1][j][k].second;
				if(!vis[a[x][y]]) vis[a[x][y]]=1,c[++tot]=b[i&1][j][k];
			}
			for(int k=1;k<=len[i][j];k++) vis[a[b[i&1][j][k].first][b[i&1][j][k].second]]=0;
			len[i][j]=tot;
			for(int k=1;k<=tot;k++) b[i&1][j][k]=c[k];
		}
	for(int i=1;i<=n;i++)
		for(int j=1;j<=n;j++)
			ans[1]++,ans[f[i][j]+1]--;
	for(int i=1;i<=n;i++) printf("%d\n",ans[i]+=ans[i-1]);
	return 0;
}