#include <bits/stdc++.h>
using namespace std;
const pair<int, int> zero = make_pair(0, 0);
const int M = 200100;
int n, m, len = 0, XX, YY;
int a[310][310], b[310][310];
int c[M], num[M], f[M], A[M];
pair<int, int> hd[M], nt[310][310], B[M];
int e[1234][1234], E = 0;
void predeal() {
  pair<int, int> now = zero;
  e[now.first + 400][now.second + 400] = (++E);
  for (int i = 2; i <= 630; i += 2) {
    --now.first, --now.second;
    for (int j = 1; j <= i; ++j) {
      ++now.second;
      e[now.first + 400][now.second + 400] = (++E);
    }
    for (int j = 1; j <= i; ++j) {
      ++now.first;
      e[now.first + 400][now.second + 400] = (++E);
    }
    for (int j = 1; j <= i; ++j) {
      --now.second;
      e[now.first + 400][now.second + 400] = (++E);
    }
    for (int j = 1; j <= i; ++j) {
      --now.first;
      e[now.first + 400][now.second + 400] = (++E);
    }
  }
}
void add(const int x, const int y, const int z) {
  nt[y][z] = hd[x], hd[x] = make_pair(y, z);
}
int find(const int x) {
  if (c[0] == x) return 0;
  if (c[len] == x) return len;
  int L = 0, R = len, mid;
  while (L + 1 < R) {
    mid = (L + R) >> 1;
    if (c[mid] == x) return mid;
    if (c[mid] < x)
      L = mid;
    else
      R = mid;
  }
  return 0;
}
void init() {
  scanf("%d%d", &n, &m);
  for (int i = 1; i <= n; ++i)
    for (int j = 1; j <= m; ++j) {
      scanf("%d", &a[i][j]);
      if (a[i][j] > 0) c[++len] = a[i][j];
    }
  for (int i = 1; i <= n; ++i)
    for (int j = 1; j <= m; ++j) {
      scanf("%d", &b[i][j]);
      if (b[i][j] > 0) c[++len] = b[i][j];
    }
  sort(c + 1, c + 1 + len);
  int k = len;
  c[len = 0] = 0;
  for (int i = 1; i <= k; ++i)
    if (c[i] != c[len]) c[++len] = c[i];
  for (int i = 0; i <= len; ++i) f[i] = i, hd[i] = zero, num[i] = 0;
  for (int i = 1; i <= n; ++i)
    for (int j = 1; j <= m; ++j) {
      if (a[i][j] > 0) a[i][j] = find(a[i][j]);
      ++num[a[i][j]];
      if (b[i][j] >= 0) b[i][j] = find(b[i][j]), add(a[i][j], i, j);
    }
  int x, y;
  scanf("%d%d", &x, &y);
  A[1] = b[x][y], B[1] = make_pair(x, y);
  b[x][y] = -1;
}
int bcj(const int x) {
  if (x != f[x]) f[x] = bcj(f[x]);
  return f[x];
}
bool cmp(const pair<int, int> &A, const pair<int, int> &C) {
  return e[A.first - XX + 400][A.second - YY + 400] <
         e[C.first - XX + 400][C.second - YY + 400];
}
void work() {
  long long ans = 0;
  pair<int, int> now;
  for (int h = 1, t = 1, p, q; h <= t; ++h) {
    now = B[h];
    p = bcj(a[now.first][now.second]), q = A[h];
    if (p != q && p != 0) {
      if (f[q] != q) {
        int o = bcj(q);
        f[o] = f[q] = q;
        if (o != p)
          num[q] = num[o];
        else
          num[q] = 0;
      }
      f[p] = q;
      num[q] += num[p];
      ans += num[p];
      int T = t;
      for (pair<int, int> i = hd[p]; i != zero; i = nt[i.first][i.second])
        if (b[i.first][i.second] >= 0) B[++T] = i;
      XX = now.first, YY = now.second;
      sort(B + t + 1, B + T + 1, cmp);
      for (int i = t + 1; i <= T; ++i)
        A[i] = b[B[i].first][B[i].second], b[B[i].first][B[i].second] = -1;
      t = T;
    }
  }
  cout << ans << endl;
}
int main() {
  predeal();
  init();
  work();
  return 0;
}
