#include <bits/stdc++.h>
using namespace std;
const int inf = 1e9;
int rx[2005], ry[2005], bx[2005], by[2005];
vector<int> rv[2005], bv[2005];
int q[2005], qs, rs, bs, t[2005][2005];
map<int, int> mr, mb;
bool vis[2005][2005];
int func(int x) {
  if (x < 0) return -x;
  return x;
}
int calc(int x, int y) {
  int a = bx[x] - rx[y];
  int b = by[x] - ry[y];
  return max((func(a + b) + 1) / 2, (func(a - b) + 1) / 2);
}
bool check(int x) {
  int i, j, k;
  memset(vis, 0, sizeof vis);
  for (i = 1; i <= bs; i++) {
    qs = 0;
    for (j = 1; j <= rs; j++) {
      if (t[i][j] <= x) {
        q[++qs] = j;
      }
    }
    for (j = 1; j <= qs; j++) {
      for (k = j + 1; k <= qs; k++) {
        if (vis[q[j]][q[k]])
          return 1;
        else
          vis[q[j]][q[k]] = 1;
      }
    }
  }
  return 0;
}
int main() {
  int n, m, i, j, a, b, u, v, st = 0, fs = inf, k = 50;
  for (i = 0; i < 2005; i++)
    for (j = 0; j < 2005; j++) t[i][j] = inf;
  scanf("%d %d", &n, &m);
  for (i = 0; i < n; i++) {
    scanf("%d %d", bx + i, by + i);
    if (mb[bx[i] + by[i]])
      bv[mb[bx[i] + by[i]]].push_back(i);
    else {
      mb[bx[i] + by[i]] = ++bs;
      bv[bs].push_back(i);
    }
  }
  for (i = 0; i < m; i++) {
    scanf("%d %d", rx + i, ry + i);
    if (mr[ry[i] - rx[i]])
      rv[mr[ry[i] - rx[i]]].push_back(i);
    else {
      mr[ry[i] - rx[i]] = ++rs;
      rv[rs].push_back(i);
    }
  }
  for (i = 1; i <= bs; i++)
    for (j = 1; j <= rs; j++)
      for (u = 0; u < bv[i].size(); u++)
        for (v = 0; v < rv[j].size(); v++)
          t[i][j] = min(t[i][j], calc(bv[i][u], rv[j][v]));
  while (k--) {
    i = (st + fs) / 2;
    if (check(i))
      fs = i;
    else
      st = i;
  }
  if (fs == inf)
    puts("Poor Sereja!");
  else
    cout << fs << endl;
}
