#include <bits/stdc++.h>
using namespace std;
int n, m;
struct pereche {
  int x, y;
};
bool f[15], f2[15];
pereche a[15], b[15];
int main() {
  scanf("%d%d", &n, &m);
  for (int i = 1; i <= n; ++i) scanf("%d%d", &a[i].x, &a[i].y);
  for (int i = 1; i <= m; ++i) scanf("%d%d", &b[i].x, &b[i].y);
  int nrp = 0, nu = 0, w = 0;
  for (int i = 1; i <= n; ++i) {
    int nr = 0;
    for (int j = 1; j <= m; ++j) {
      if (a[i].x == b[j].x && a[i].y == b[j].y) continue;
      if (a[i].y == b[j].x && a[i].x == b[j].y) continue;
      if (a[i].x == b[j].x || a[i].x == b[j].y) nr |= 1;
      if (a[i].y == b[j].y || a[i].y == b[j].x) nr |= 2;
    }
    if (nr == 3)
      nu = 1, f[a[i].y] = 1, f[a[i].x] = 1;
    else if (nr == 2) {
      nrp = nrp + 1 - f[a[i].y];
      f[a[i].y] = 1;
      w = a[i].y;
    } else if (nr == 1) {
      nrp = nrp + 1 - f[a[i].x];
      f[a[i].x] = 1;
      w = a[i].x;
    }
  }
  if (nrp == 1 && nu == 0) {
    printf("%d", w);
    return 0;
  }
  nrp = 0;
  for (int j = 1; j <= m; ++j) {
    int nr = 0;
    for (int i = 1; i <= n; ++i) {
      if (a[i].x == b[j].x && a[i].y == b[j].y) continue;
      if (a[i].y == b[j].x && a[i].x == b[j].y) continue;
      if (a[i].x == b[j].x || a[i].y == b[j].x) nr |= 1;
      if (a[i].x == b[j].y || a[i].y == b[j].y) nr |= 2;
    }
    if (nr == 3)
      nu = 1, f2[b[j].y] = 1, f2[b[j].x] = 1;
    else if (nr == 2) {
      nrp = nrp + 1 - f2[b[j].y];
      f2[b[j].y] = 1;
      w = b[j].y;
    } else if (nr == 1) {
      nrp = nrp + 1 - f2[b[j].x];
      f2[b[j].x] = 1;
      w = b[j].x;
    }
  }
  if (nrp == 1 && nu == 0) {
    printf("%d", w);
    return 0;
  }
  nrp = 0;
  for (int i = 1; i <= 9; ++i)
    if (f[i] == 1 && f2[i] == 1) ++nrp, w = i;
  if (nrp == 1) {
    printf("%d", w);
    return 0;
  }
  if (nu == 1) {
    printf("-1");
    return 0;
  }
  printf("0");
  return 0;
}
