#include <iostream>
#include <fstream>
#include <queue>
using namespace std;
struct nr{
int viz=0,cheie=0,nr=0;
};
struct poz{
int x,y;
};
int f[22600];
int n,m;
nr a[152][152];
int caut(int x,int y)
{
poz start;
start.x=x;
start.y=y;
queue <poz> q;
q.push(start);
while(!q.empty())
{
x=q.front().x;
y=q.front().y;
q.pop();
if(a[x][y].viz<8 && x<=n && y<=m && x>=0 && y>=0)
{
a[x][y].viz++;
///sus
if(a[x-1][y].cheie!=-1 && (f[a[x-1][y].cheie] || a[x-1][y].viz))
{
poz p;
p.x=x-1;
p.y=y;
f[a[x-1][y].nr]++;
q.push(p);
}
///jos
if(a[x+1][y].cheie!=-1 && (f[a[x+1][y].cheie] || a[x+1][y].viz))
{
poz p;
p.x=x+1;
p.y=y;
f[a[x+1][y].nr]++;
q.push(p);
}
///stanga
if(a[x][y-1].cheie!=-1 && (f[a[x][y-1].cheie] || a[x][y-1].viz))
{
poz p;
p.x=x;
p.y=y-1;
f[a[x][y-1].nr]++;
q.push(p);
}
///dreapta
if(a[x][y+1].cheie!=-1 && (f[a[x][y+1].cheie] || a[x][y+1].viz))
{
poz p;
p.x=x;
p.y=y+1;
f[a[x][y+1].nr]++;
q.push(p);
}
}
}
}
int main()
{
ifstream cin("castel.in");
ofstream cout("castel.out");
cin>>n>>m;
for(int i=0;i<=n+1;i++)
{
a[i][0].cheie=-1;
a[i][m+1].cheie=-1;
}
for(int i=0;i<=m+1;i++)
{
a[0][i].cheie=-1;
a[n+1][i].cheie=-1;
}
int k;
cin>>k;
f[k]++;
int x,y;
int s=1;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
cin>>a[i][j].cheie;
a[i][j].nr=s;
if(k==s)
{
x=i;
y=j;
}
s++;
}
}
caut(x,y);s=0;
for(int i=1;i<=n*m;i++)
if(f[i])
s++;
cout<<s;
return 0;
}