#include <bits/stdc++.h>
using namespace std;
const int INF = 0x3f3f3f3f;
const long long LLINF = 1e18;
const int maxN = 1e5;
int n, m, a, b;
int mat[100][100];
int main() {
  scanf("%d %d", &n, &m);
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < m; j++) {
      scanf("%d", &mat[i][j]);
    }
  }
  scanf("%d %d", &a, &b);
  int ans = INF;
  for (int i = 0; i < n - a + 1; i++) {
    for (int j = 0; j < m - b + 1; j++) {
      int pos_ans = 0;
      for (int ii = 0; ii < a; ii++) {
        for (int jj = 0; jj < b; jj++) {
          pos_ans += mat[i + ii][j + jj];
        }
      }
      ans = min(ans, pos_ans);
    }
  }
  swap(a, b);
  for (int i = 0; i < n - a + 1; i++) {
    for (int j = 0; j < m - b + 1; j++) {
      int pos_ans = 0;
      for (int ii = 0; ii < a; ii++) {
        for (int jj = 0; jj < b; jj++) {
          pos_ans += mat[i + ii][j + jj];
        }
      }
      ans = min(ans, pos_ans);
    }
  }
  printf("%d\n", ans);
  return 0;
}
