#include <bits/stdc++.h>
using namespace std;
set<int> s;
bool is_correct(pair<int, int> p1, pair<int, int> p2) {
  s.clear();
  s.insert(p1.first);
  s.insert(p1.second);
  s.insert(p2.first);
  s.insert(p2.second);
  if (s.size() == 3) return 1;
  return 0;
}
int get_same(pair<int, int> p1, pair<int, int> p2) {
  s.clear();
  s.insert(p1.first);
  s.insert(p1.second);
  if (s.find(p2.first) != s.end()) return p2.first;
  if (s.find(p2.second) != s.end()) return p2.second;
  return 0;
}
int main() {
  int n, m;
  cin >> n >> m;
  pair<int, int> a[n];
  pair<int, int> b[m];
  for (int i = 0; i < n; i++) {
    int t1, t2;
    cin >> t1 >> t2;
    a[i] = pair<int, int>(min(t1, t2), max(t1, t2));
  }
  for (int i = 0; i < m; i++) {
    int t1, t2;
    cin >> t1 >> t2;
    b[i] = pair<int, int>(min(t1, t2), max(t1, t2));
  }
  set<int> mind;
  int ans = -10;
  set<int> ka[n];
  set<int> kb[m];
  for (int i = 0; i < n; i++)
    for (int j = 0; j < m; j++) {
      if (!is_correct(a[i], b[j])) continue;
      ans = get_same(a[i], b[j]);
      mind.insert(ans);
      ka[i].insert(ans);
      kb[j].insert(ans);
    }
  if (mind.size() == 1)
    cout << *(mind.begin());
  else {
    for (int i = 0; i < n; i++)
      if (ka[i].size() > 1) {
        cout << -1;
        return 0;
      }
    for (int i = 0; i < m; i++)
      if (kb[i].size() > 1) {
        cout << -1;
        return 0;
      }
    cout << 0;
  }
  return 0;
}
