#include <bits/stdc++.h>
using namespace std;
const int MAXN = 305;
const int X[4] = {0, 1, 0, -1};
const int Y[4] = {1, 0, -1, 0};
bool vis[MAXN * MAXN];
int n, m, a[MAXN][MAXN], b[MAXN][MAXN], cnt[MAXN * MAXN], x, y;
vector<int> d, col[MAXN * MAXN];
queue<int> q;
int order(int x, int y) {
  int nx = 0, ny = 0, ord = 0, d = 0, add = 1;
  for (int i = 0;; i++) {
    int x1 = nx, x2 = nx + X[d] * add, y1 = ny, y2 = ny + Y[d] * add;
    if (x1 > x2) swap(x1, x2);
    if (y1 > y2) swap(y1, y2);
    if (nx == x && y1 <= y && y <= y2) return ord + abs(y - ny);
    if (ny == y && x1 <= x && x <= x2) return ord + abs(x - nx);
    nx += add * X[d], ny += add * Y[d];
    ord += add;
    if (i % 2 == 1) add++;
    d = (d + 1) % 4;
  }
  return -1;
}
void add(int c, int x, int y) {
  vector<pair<int, int> > v;
  for (int i = 0; i < (int)col[c].size(); i++) {
    int xi = col[c][i] / m, yi = col[c][i] % m;
    xi = x - xi, yi -= y;
    if (xi == 0 && yi == 0) continue;
    v.push_back(make_pair(order(yi, xi), col[c][i]));
  }
  sort(v.begin(), v.end());
  for (int i = 0; i < (int)v.size(); i++) q.push(v[i].second);
}
int main() {
  scanf("%d %d", &n, &m);
  for (int i = 0; i < n; i++)
    for (int j = 0; j < m; j++) {
      scanf("%d", &a[i][j]);
      d.push_back(a[i][j]);
    }
  for (int i = 0; i < n; i++)
    for (int j = 0; j < m; j++) {
      scanf("%d", &b[i][j]);
      if (b[i][j] >= 0) d.push_back(b[i][j]);
    }
  scanf("%d %d", &x, &y);
  --x, --y;
  d.push_back(0);
  sort(d.begin(), d.end());
  d.resize(unique(d.begin(), d.end()) - d.begin());
  for (int i = 0; i < n; i++)
    for (int j = 0; j < m; j++) {
      a[i][j] = lower_bound(d.begin(), d.end(), a[i][j]) - d.begin();
      cnt[a[i][j]]++;
    }
  for (int i = 0; i < n; i++)
    for (int j = 0; j < m; j++)
      if (b[i][j] >= 0) {
        b[i][j] = lower_bound(d.begin(), d.end(), b[i][j]) - d.begin();
        col[a[i][j]].push_back(i * m + j);
      }
  int cur = a[x][y], num = 0;
  long long ans = 0;
  q.push(x * m + y);
  while (!q.empty()) {
    int qx = q.front() / m, qy = q.front() % m;
    q.pop();
    if (cur == 0 || b[qx][qy] == cur) continue;
    if (!vis[cur]) {
      vis[cur] = true;
      num += cnt[cur];
      add(cur, qx, qy);
    }
    ans += num;
    cur = b[qx][qy];
  }
  cout << ans << endl;
  return 0;
}
