#include <iostream>
#include <vector>
#include <algorithm>
#include <queue>
#include <map>
using namespace std;
int r, c, k;
int a[101][101];
int main() {
//freopen("in1.txt", "rt", stdin);
cin >> r >> c >> k;
for (int i = 1; i <= 3; i++) {
for (int j = 1; j <= 3; j++) {
cin >> a[i][j];
}
}
int ans = 0;
int n, m;
n = m = 3;
while (1) {
if (a[r][c] == k) {
cout << ans << '\n';
return 0;
}
if (ans > 100) break;
if (n >= m) { //R연산
int mm = m;
for (int i = 1; i <= n; i++) {
map<int, int> d;
for (int j = 1; j <= m; j++) {
if (a[i][j] == 0) continue;
d[a[i][j]]++;
}
vector<pair<int, int>> v;
for (auto iter:d) {
v.push_back(make_pair(iter.second, iter.first));
}
sort(v.begin(), v.end());
int l = v.size();
for (int j = 1; j <= l; j++) {
a[i][j * 2 - 1] = v[j - 1].second;
a[i][j * 2] = v[j - 1].first;
}
for (int j = l*2+1; j <= 100; j++) {
a[i][j] = 0;
}
if (v.size() * 2 > mm) mm = v.size() * 2;
}
m = mm;
}
else {//C연산
int nn = n;
for (int j = 1; j <= m; j++) {
map<int, int> d;
for (int i = 1; i <= n; i++) {
if (a[i][j] == 0) continue;
d[a[i][j]]++;
}
vector<pair<int, int>> v;
for (auto iter : d) {
v.push_back(make_pair(iter.second, iter.first));
}
sort(v.begin(), v.end());
int l = v.size();
for (int i = 1; i <= l; i++) {
a[i * 2 - 1][j] = v[i - 1].second;
a[i * 2][j] = v[i - 1].first;
}
for (int i = l*2+1; i <= 100; i++) {
a[i][j] = 0;
}
if (v.size() * 2 > nn) nn = v.size() * 2;
}
n = nn;
}
ans++;
}
cout << -1 << '\n';
return 0;
}