#include <bits/stdc++.h>
const bool DEBUG = false;
using namespace std;
const long long maxn = 2e5 + 5;
const long long INF = 1e18 + 1;
const long long M = 1e9 + 7;
const int lg = 21;
int n, m, x[maxn], b[maxn], a[maxn], y[maxn];
vector<pair<int, int> > v;
set<int> s;
int main() {
  ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
  cin >> n >> m;
  for (int i = 0; i < n; i++) cin >> x[i] >> y[i];
  for (int i = 0; i < m; i++) cin >> a[i] >> b[i];
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < m; j++) {
      if (a[j] == b[j] or x[i] == y[i]) continue;
      if (a[j] == x[i] and b[j] == y[i]) continue;
      if (a[j] == y[i] and b[j] == x[i]) continue;
      if (a[j] != x[i] and a[j] != y[i] and b[j] != x[i] and b[j] != y[i])
        continue;
      if (a[j] == x[i] or a[j] == y[i])
        s.insert(a[j]);
      else
        s.insert(b[j]);
    }
  }
  if (s.size() == 1) return cout << (*s.begin()) << endl, 0;
  for (int i = 0; i < n; i++) {
    vector<int> v;
    set<int> s;
    for (int j = 0; j < m; j++) {
      if (a[j] == b[j] or x[i] == y[i]) continue;
      if (a[j] == x[i] and b[j] == y[i]) continue;
      if (a[j] == y[i] and b[j] == x[i]) continue;
      if (a[j] != x[i] and a[j] != y[i] and b[j] != x[i] and b[j] != y[i])
        continue;
      if (x[i] == a[j] or x[i] == b[j])
        s.insert(x[i]);
      else
        s.insert(y[i]);
    }
    if (s.size() > 1) return cout << -1 << endl, 0;
  }
  for (int i = 0; i < m; i++) {
    vector<int> v;
    set<int> s;
    for (int j = 0; j < n; j++) {
      if (a[i] == b[i] or x[j] == y[j]) continue;
      if (a[i] == x[j] and b[i] == y[j]) continue;
      if (a[i] == y[j] and b[i] == x[j]) continue;
      if (a[i] != x[j] and a[i] != y[j] and b[i] != x[j] and b[i] != y[j])
        continue;
      if (x[j] == a[i] or a[i] == y[j])
        s.insert(a[i]);
      else
        s.insert(b[i]);
    }
    if (s.size() > 1) return cout << -1 << endl, 0;
  }
  cout << 0 << endl;
  return 0;
}
