#include <fstream>
#include <vector>
#pragma GCC optimize ("O3")
#pragma GCC optimize ("Ofast")
#pragma GCC optimize ("unroll-loops")
using namespace std;
ifstream cin( "castel.in" );
ofstream cout( "castel.out" );
const int MAX = 22501;
vector<int> G[ MAX ];
bool viz[ MAX ];
int v[ MAX ];
int n, m, x;
int rez;
int test( int i ) {
return ( ( i % m != 0 && viz[ i - 1 ] ) || ( i % m != m - 1 && viz[ i + 1 ] ) || ( i + m < n * m && viz[ i + m ] ) || ( i - m >= 0 && viz[ i - m ] ) );
}
void Fill( const int& i ) {
if( viz[ i ] )
return;
rez++;
viz[ i ] = 1;
if( i % m != 0 && viz[ v[ i - 1 ] ] )
Fill( i - 1 );
if( i % m != m - 1 && viz[ v[ i + 1 ] ] )
Fill( i + 1 );
if( i + m < n * m && viz[ v[ i + m ] ] )
Fill( i + m );
if( i - m >= 0 && viz[ v[ i - m ] ] )
Fill( i - m );
for( const int& it : G[ i ] )
if( test( it ) )
Fill( it );
}
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cin >> n >> m >> x;
x--;
int right = n * m;
for( int i = 0; i < right; i++ ) {
cin >> v[ i ];
v[ i ]--;
G[ v[ i ] ].push_back( i );
}
Fill( x );
cout << rez << '\n';
return 0;
}