#include <bits/stdc++.h>
using namespace std;
static auto faster_iostream = []() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  return 0;
}();
void print() { cout << '\n'; }
template <class T, class... U>
void print(T x, U... y) {
  cout << x << ' ';
  print(y...);
}
const int N = 2e3 + 5, M = 998244353;
long long qpow(long long x, long long n) {
  long long res = 1;
  for (; n; n >>= 1, x = x * x % M)
    if (n & 1) res = res * x % M;
  return res;
}
int a[N * 2], b[N * 2];
int n, m;
int cnt[N][N];
void merge(vector<pair<int, pair<int, int>>> &v) {
  sort(v.begin(), v.end());
  int tot = 0;
  for (int i = 1; i < v.size(); i++) {
    if (v[i].first != v[tot].first || v[i].second.first > v[tot].second.second)
      v[++tot] = v[i];
    else
      v[tot].second.second = v[i].second.second;
  }
  v.resize(tot + 1);
}
bool inmid(int k1, int k2, int k3) { return k1 <= k3 && k2 >= k3; }
bool check(int t) {
  vector<pair<int, pair<int, int>>> A(n), B(m);
  for (int i = 0; i < n; i++)
    A[i] = make_pair(b[i], make_pair(a[i] - 2 * t, a[i] + 2 * t));
  for (int i = n; i < n + m; i++)
    B[i - n] = make_pair(a[i], make_pair(b[i] - 2 * t, b[i] + 2 * t));
  memset(cnt, 0, sizeof cnt);
  merge(A);
  merge(B);
  for (auto p : A) {
    vector<int> adj;
    for (int i = 0; i < B.size(); i++) {
      if (inmid(B[i].second.first, B[i].second.second, p.first) &&
          inmid(p.second.first, p.second.second, B[i].first)) {
        for (int q : adj) {
          if (cnt[i][q]++) return 1;
        }
        adj.push_back(i);
      }
    }
  }
  return 0;
}
int main() {
  cin >> n >> m;
  for (int i = 0; i < n + m; i++) {
    cin >> a[i] >> b[i];
    int x = a[i] - b[i], y = a[i] + b[i];
    a[i] = x, b[i] = y;
  }
  int l = 1, r = 1e6 + 5, ans = -1;
  while (l <= r) {
    int mid = l + r >> 1;
    if (check(mid))
      ans = mid, r = mid - 1;
    else
      l = mid + 1;
  }
  if (ans == -1)
    cout << "Poor Sereja!";
  else
    cout << ans << '\n';
}
