#include <bits/stdc++.h>
using namespace std;
int main() {
  int pole[100][100];
  bool flag1, flag2;
  int n, m, a, b, ii, jj;
  cin >> n >> m;
  int i, j;
  for (i = 0; i < n; i++)
    for (j = 0; j < m; j++) scanf("%d", &pole[i][j]);
  cin >> a >> b;
  int mini = 0;
  if (a <= n && b <= m) {
    for (i = 0; i < a; i++)
      for (j = 0; j < b; j++)
        if (pole[i][j] == 1) mini++;
  } else
    for (i = 0; i < b; i++)
      for (j = 0; j < a; j++)
        if (pole[i][j] == 1) mini++;
  int count;
  for (i = 0; i < n; i++)
    for (j = 0; j < m; j++) {
      count = 0;
      flag1 = false;
      flag2 = false;
      if (i + a <= n && j + b <= m) {
        for (ii = i; ii < i + a; ii++)
          for (jj = j; jj < j + b; jj++)
            if (pole[ii][jj] == 1) count++;
        flag1 = true;
      }
      if (count < mini && flag1) mini = count;
      count = 0;
      if (i + b <= n && j + a <= m) {
        for (ii = i; ii < i + b; ii++)
          for (jj = j; jj < j + a; jj++)
            if (pole[ii][jj] == 1) count++;
        flag2 = true;
      }
      if (count < mini && flag2) mini = count;
    }
  cout << mini << endl;
  return 0;
}
