#include <bits/stdc++.h>
using namespace std;
int n, m;
vector<pair<int, int> > A, B;
void merge(vector<pair<int, int> >& A) {
  int i;
  for ((i) = (0); (i) != (A.size()); ++(i)) {
    int tx = A[i].first, ty = A[i].second;
    A[i].first = tx + ty;
    A[i].second = tx - ty;
  }
}
vector<pair<int, pair<int, int> > > get(vector<pair<int, int> > A, int mid) {
  vector<pair<int, pair<int, int> > > ans;
  size_t i;
  for (i = 0; i < A.size();) {
    int l = A[i].second - mid;
    int r = A[i].second + mid;
    int first = A[i].first;
    for (; i < A.size() && A[i].first == first && A[i].second - mid <= r; ++i)
      r = A[i].second + mid;
    ans.push_back(make_pair(first, make_pair(l, r)));
  }
  return ans;
}
int check(int mid) {
  size_t i, j;
  vector<pair<int, pair<int, int> > > X = get(A, mid);
  vector<pair<int, pair<int, int> > > Y = get(B, mid);
  for ((i) = (0); (i) != (X.size()); ++(i)) {
    int l = X[i].second.first;
    int r = X[i].second.second;
    int first = X[i].first;
    vector<pair<int, int> > toAdd;
    set<int> hash;
    for ((j) = (0); (j) != (Y.size()); ++(j))
      if (Y[j].second.first <= first && first <= Y[j].second.second &&
          l <= Y[j].first && Y[j].first <= r)
        toAdd.push_back(make_pair(Y[j].second.first, Y[j].first));
    sort(toAdd.begin(), toAdd.end());
    size_t now = 0;
    for ((j) = (0); (j) != (i); ++(j)) {
      for (; now < toAdd.size() && toAdd[now].first <= X[j].first; ++now)
        hash.insert(toAdd[now].second);
      int l = X[j].second.first;
      int r = X[j].second.second;
      set<int>::iterator it, ij;
      it = hash.lower_bound(l);
      ij = hash.lower_bound(r + 1);
      if (it == ij) continue;
      if ((++it) == ij) continue;
      return 1;
    }
  }
  return 0;
}
int main() {
  int i;
  int a, b;
  cin >> n >> m;
  for ((i) = (1); (i) <= (n); ++(i)) {
    cin >> a >> b;
    A.push_back(make_pair(a, b));
  }
  for ((i) = (1); (i) <= (m); ++(i)) {
    cin >> a >> b;
    B.push_back(make_pair(a, b));
  }
  merge(A);
  merge(B);
  for ((i) = (0); (i) != ((int)B.size()); ++(i)) swap(B[i].first, B[i].second);
  sort(A.begin(), A.end());
  sort(B.begin(), B.end());
  int left = 0, right = 1e7;
  while (left < right) {
    int mid = (left + right) / 2;
    if (check(mid * 2))
      right = mid;
    else
      left = mid + 1;
  }
  if (left == 1e7)
    printf("Poor Sereja!\n");
  else
    printf("%d\n", left);
  return 0;
}
