#include <bits/stdc++.h>
using namespace std;
ifstream f("castel.in");
ofstream g("castel.out");
int n, m, k;
int dx[]={-1, 0, 1, 0};
int dy[]={0, 1, 0, -1};
bool viz[155][155]; /// pe unde a fost
bool key[155*155]; /// cheile pe care le are
struct Castel{
int cheie; ///cheie necesara pt a intra in camera
int cam; /// nrul camerei
}a[155][155];
deque <pair< int, int > > q; ///Camere Prin Care Se Poate Trece
deque <pair< int, int > > CamereRamase; ///pe aici ar putea trece
int camviz;
bool inside(int x, int y)
{ return x>=1 && x<=n && y>=1 && y<=m;
}
void lee()
{ camviz++;
bool ok=true;
int lc, cc, ln, cn;
do {
ok = true;
for(int st = 0; st < camviz; st++) {
lc = q[st].first;
cc = q[st].second;
for(int k = 0; k < 4; k++) {
ln = lc + dx[k];
cn = cc + dy[k];
if(key[a[ln][cn].cheie]==1 && !viz[ln][cn] && inside(ln, cn)==1) {
ok = false;
key[a[ln][cn].cam] = true;
q[camviz++] = {ln, cn};
viz[ln][cn] = true;
}
}
}
} while(!ok);
}
int main()
{
f>>n>>m>>k;
int nrcam=0;
for (int i=1;i<=n;i++)
{ for (int j=1;j<=m;j++)
{ f>>a[i][j].cheie;
a[i][j].cam=++nrcam;
if (nrcam==k)
{ viz[i][j]=1;
key[nrcam]=1;
q.push_front(make_pair(i, j));
}
}
}
lee();
g<<camviz<<'\n';
return 0;
}