#include <bits/stdc++.h>
using namespace std;
int n, m;
pair<int, int> A[2500], B[2500], a[2500], b[2500];
pair<int, pair<int, int> > arr[2500], brr[2500];
int F[10000000];
void update(int x, int val) {
  while (x) {
    F[x] += val;
    x -= x & -x;
  }
}
int query(int x, int y) {
  int r = 0;
  y++;
  while (x < 10000000) {
    r += F[x];
    x += x & -x;
  }
  while (y < 10000000) {
    r -= F[y];
    y += y & -y;
  }
  return r;
}
bool cmp(pair<int, pair<int, int> > a, pair<int, pair<int, int> > b) {
  return a.second.second > b.second.second;
}
int ctrl(int t) {
  t *= 2;
  int mini = 0;
  for (long long int i = 1; i <= n; i++) {
    a[i] = make_pair(A[i].first - A[i].second, A[i].first + A[i].second);
    mini = min(mini, a[i].second);
  }
  for (long long int i = 1; i <= n; i++)
    brr[i] = make_pair(a[i].second, make_pair(a[i].first - t, a[i].first + t));
  for (long long int i = 1; i <= m; i++)
    b[i] = make_pair(B[i].first - B[i].second, B[i].first + B[i].second);
  for (long long int i = 1; i <= m; i++) {
    arr[i] = make_pair(b[i].first, make_pair(b[i].second - t, b[i].second + t));
    mini = min(mini, b[i].second - t);
  }
  int nn = 0, mm = 0;
  sort(brr + 1, brr + n + 1);
  for (long long int i = 1; i <= n; i++)
    if (nn and brr[nn].first == brr[i].first and
        brr[i].second.first <= brr[nn].second.second)
      brr[nn].second.second = brr[i].second.second;
    else
      brr[++nn] = brr[i];
  sort(arr + 1, arr + m + 1);
  for (long long int i = 1; i <= m; i++)
    if (mm and arr[mm].first == arr[i].first and
        arr[i].second.first <= arr[mm].second.second)
      arr[mm].second.second = arr[i].second.second;
    else
      arr[++mm] = arr[i];
  mini--;
  for (long long int i = 1; i <= nn; i++) brr[i].first -= mini;
  for (long long int i = 1; i <= mm; i++)
    arr[i].second.first -= mini, arr[i].second.second -= mini;
  sort(arr + 1, arr + mm + 1);
  sort(brr + 1, brr + nn + 1, cmp);
  for (long long int sol = 1; sol <= mm; sol++) {
    vector<pair<int, int> > v;
    for (long long int i = 1; i <= nn; i++) {
      if (brr[i].second.first <= arr[sol].first and
          arr[sol].first <= brr[i].second.second and
          arr[sol].second.first <= brr[i].first and
          brr[i].first <= arr[sol].second.second) {
        v.push_back(make_pair(brr[i].second.second, brr[i].first));
        update(brr[i].first, 1 - query(brr[i].first, brr[i].first));
      }
    }
    for (long long int sag = sol + 1; sag <= mm; sag++) {
      if (arr[sag].first == arr[sol].first) continue;
      while (v.size() and v.back().first < arr[sag].first) {
        update(v.back().second, 0 - query(v.back().second, v.back().second));
        v.pop_back();
      }
      if (query(arr[sag].second.first, arr[sag].second.second) >= 2) {
        while (v.size()) {
          update(v.back().second, 0 - query(v.back().second, v.back().second));
          v.pop_back();
        }
        return 1;
      }
    }
    while (v.size()) {
      update(v.back().second, 0 - query(v.back().second, v.back().second));
      v.pop_back();
    }
  }
  return 0;
}
int main() {
  cin >> n >> m;
  for (long long int i = 1; i <= n; i++) cin >> A[i].first >> A[i].second;
  for (long long int i = 1; i <= m; i++) cin >> B[i].first >> B[i].second;
  int bas = 1, son = 2000005, orta;
  while (bas < son) {
    orta = (bas + son) / 2;
    if (ctrl(orta))
      son = orta;
    else
      bas = orta + 1;
  }
  if (bas == 2000005) return cout << "Poor Sereja!" << endl, 0;
  cout << bas << endl;
}
