#include <bits/stdc++.h>
using namespace std;
const int iinf = 1 << 29;
const long long inf = 1ll << 60;
const long long mod = 1e9 + 7;
void GG() {
  cout << "-1\n";
  exit(0);
}
long long mpow(long long a, long long n, long long mo = mod) {
  long long re = 1;
  while (n > 0) {
    if (n & 1) re = re * a % mo;
    a = a * a % mo;
    n >>= 1;
  }
  return re;
}
long long inv(long long b, long long mo = mod) {
  if (b == 1) return b;
  return (mo - mo / b) * inv(mo % b) % mo;
}
const int maxn = 2005;
struct line {
  int x1, y1, x2, y2;
  void ori() {
    assert(x1 == x2 || y1 == y2);
    if (x1 > x2) swap(x1, x2);
    if (y1 > y2) swap(y1, y2);
  }
  void prt() { ; }
};
void L(int &x1, int &y1) {
  int ox = x1;
  x1 = x1 - y1;
  y1 = ox + y1;
}
vector<pair<int, int> > blu, red;
int n, m;
vector<int> hv;
bool seen[4000000 + 5];
int buf = 2e6 + 1;
int leq(int x) { return upper_bound(hv.begin(), hv.end(), x) - hv.begin(); }
bool ok(int t) {
  vector<line> Hor, Ver;
  for (pair<int, int> x : blu) {
    int x1 = x.first - t, y1 = x.second + t, x2 = x.first + t,
        y2 = x.second - t;
    L(x1, y1);
    L(x2, y2);
    Hor.push_back({x1, y1, x2, y2});
    Hor.back().ori();
  }
  vector<line> hor, ver;
  sort(Hor.begin(), Hor.end(), [&](line a, line b) {
    return a.y1 != b.y1 ? a.y1 < b.y1 : a.x1 < b.x1;
  });
  for (int i = 0; i < n; i++) {
    if (i && Hor[i].y1 == hor.back().y1 && Hor[i].x1 <= hor.back().x2) {
      hor.back().x2 = Hor[i].x2;
    } else {
      hor.push_back(Hor[i]);
    }
  }
  for (pair<int, int> x : red) {
    int x1 = x.first + t, y1 = x.second + t, x2 = x.first - t,
        y2 = x.second - t;
    L(x1, y1);
    L(x2, y2);
    Ver.push_back({x1, y1, x2, y2});
    Ver.back().ori();
  }
  sort(Ver.begin(), Ver.end(), [&](line a, line b) {
    return a.x1 != b.x1 ? a.x1 < b.x1 : a.y1 < b.y1;
  });
  for (int i = 0; i < m; i++) {
    if (i && Ver[i].x1 == ver.back().x1 && Ver[i].y1 <= ver.back().y2) {
      ver.back().y2 = Ver[i].y2;
    } else {
      ver.push_back(Ver[i]);
    }
  }
  sort(hor.begin(), hor.end(), [&](line a, line b) { return a.y1 < b.y1; });
  sort(ver.begin(), ver.end(), [&](line a, line b) { return a.y1 < b.y1; });
  for (int i = 1; i < n; i++) {
    for (int x : hv) seen[x + buf] = 0;
    hv.clear();
    ;
    hor[i].prt();
    int j = 0;
    for (int it = 0; hor[it].y1 != hor[i].y1; it++) {
      ;
      hor[it].prt();
      while (j < m && ver[j].y1 <= hor[it].y1) {
        if (ver[j].y2 >= hor[i].y1 && ver[j].x1 >= hor[i].x1 &&
            ver[j].x1 <= hor[i].x2) {
          if (!seen[ver[j].x1 + buf])
            hv.push_back(ver[j].x1), seen[ver[j].x1 + buf] = 1;
          ver[j].prt();
          ;
        }
        j++;
      }
      sort(hv.begin(), hv.end());
      if (leq(hor[it].x2) - leq(hor[it].x1 - 1) > 1) {
        return 1;
      }
    }
  }
  return 0;
}
signed main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  ;
  cin >> n >> m;
  for (int i = 0; i < n; i++) {
    int x, y;
    cin >> x >> y;
    blu.push_back({x, y});
  }
  for (int i = 0; i < m; i++) {
    int x, y;
    cin >> x >> y;
    red.push_back({x, y});
  }
  int l = 1, r = 2e6 + 2;
  while (l != r) {
    int mid = (l + r) / 2;
    if (ok(mid)) {
      r = mid;
    } else {
      l = mid + 1;
    }
  }
  if (l == 2e6 + 2) {
    cout << "Poor Sereja!" << '\n';
    return 0;
  }
  cout << l << '\n';
}
