#include <bits/stdc++.h>
using namespace std;
const int N = 2005;
int n, m;
struct pt {
  int x, y;
  inline void read() { scanf("%d%d", &x, &y); }
} a[N], b[N];
struct line {
  int x1, x2, y1, y2;
  line() {}
  line(int X1, int Y1, int X2, int Y2) {
    if (X1 < X2)
      x1 = X1, x2 = X2, y1 = Y1, y2 = Y2;
    else
      x1 = X2, x2 = X1, y1 = Y2, Y2 = y1;
  }
  inline int k() const { return x1 == x2 ? 1 : (y2 - y1) / (x2 - x1); }
  inline int at(int x) const { return y1 + (x - x1) * k(); }
} l1[N], l2[N];
int n1, n2, l[N];
inline bool conj(const line &A, const line &B) {
  const line &a = A.x1 > B.x1 ? B : A, &b = A.x1 > B.x1 ? A : B;
  if (a.x2 < b.x1) return 0;
  return a.at(b.x1) == b.y1;
}
inline bool inter(const line &a, const line &b) {
  int x = -2 * (b.at(0) - a.at(0)) / (b.k() - a.k());
  return a.x1 * 2 <= x && a.x2 * 2 >= x && b.x1 * 2 <= x && b.x2 * 2 >= x;
}
line merge(const line &A, const line &B) {
  const line &a = A.x1 > B.x1 ? B : A, &b = A.x1 > B.x1 ? A : B;
  return line(a.x1, a.y1, b.x2, b.y2);
}
bool vis[N][N];
bool check(int t) {
  line cur;
  bool flag;
  n1 = 0;
  for (int i = 1; i <= n; ++i) {
    cur = line(a[i].x - t, a[i].y + t, a[i].x + t, a[i].y - t);
    flag = 0;
    for (int j = 1; !flag && j <= n1; ++j) {
      if (conj(l1[j], cur)) l1[j] = merge(l1[j], cur), flag = 1;
    }
    if (!flag) l1[++n1] = cur;
  }
  n2 = 0;
  for (int i = 1; i <= m; ++i) {
    cur = line(b[i].x - t, b[i].y - t, b[i].x + t, b[i].y + t);
    flag = 0;
    for (int j = 1; !flag && j <= n2; ++j) {
      if (conj(l2[j], cur)) l2[j] = merge(l2[j], cur), flag = 1;
    }
    if (!flag) l2[++n2] = cur;
  }
  int ln;
  for (int i = 1; i <= n2; ++i)
    for (int j = 1; j <= n2; ++j) vis[i][j] = 0;
  for (int i = 1; i <= n1; ++i) {
    ln = 0;
    for (int j = 1; j <= n2; ++j)
      if (inter(l1[i], l2[j])) l[++ln] = j;
    for (int j = 1; j <= ln; ++j)
      for (int k = j + 1; k <= ln; ++k)
        if (vis[l[j]][l[k]])
          return 1;
        else
          vis[l[j]][l[k]] = 1;
  }
  return 0;
}
inline bool cmp(pt x, pt y) { return x.x < y.x; }
int main() {
  scanf("%d%d", &n, &m);
  for (int i = 1; i <= n; ++i) a[i].read();
  for (int j = 1; j <= m; ++j) b[j].read();
  sort(a + 1, a + n + 1, cmp);
  sort(b + 1, b + m + 1, cmp);
  int l = 1, r = 2000005, mid;
  while (l < r) {
    mid = (l + r) >> 1;
    if (check(mid))
      r = mid;
    else
      l = mid + 1;
  }
  if (l > 2000000)
    puts("Poor Sereja!");
  else
    printf("%d\n", l);
  return 0;
}
