#include <bits/stdc++.h>
#pragma GCC optimize("fast-math")
#pragma GCC optimize("Ofast")
#pragma GCC optimize("unroll-loops")
#pragma GCC diagnostic ignored "-Woverflow"
using namespace std;
const short INF16 = ~(1 << 15);
const int INF32 = 2e9 + 11;
const int SZ = 4e5 + 11;
const int SZ2 = int(1e6 + 11);
const int mod = 998244353;
const int mod2 = 998244353;
const int PIVO = 2e5 + 11;
const long long INF64 = 8e18;
const long long P1 = 53;
const long long P2 = 47;
const long double eps = 1e-10;
const long double PI = acosl(-1);
inline long long MOD(long long x) {
  x %= mod, x += mod;
  return x % mod;
}
inline long long MOD(long long x, long long m) {
  x %= m, x += m;
  return x % m;
}
inline long long T(int x) { return 1ll * x * (x + 1) >> 1; }
inline long long TT(int x) { return 1ll * x * (x + 1) * (x + 2) / 6; }
inline long long gcd(long long a, long long b) { return b ? gcd(b, a % b) : a; }
inline long long lcm(long long a, long long b) { return a * b / gcd(a, b); }
long long fpow(long long a, long long b, long long mod) {
  if (!b) return 1;
  if (b == 1) return a % mod;
  if (b & 1) return fpow(a, b ^ 1, mod) * a % mod;
  long long d = fpow(a, b >> 1, mod);
  return d * d % mod;
}
long long fpow(long long a, long long b) {
  if (!b) return 1;
  if (b == 1) return a;
  if (b & 1) return fpow(a, b ^ 1) * a;
  long long d = fpow(a, b >> 1);
  return d * d;
}
void Solve(int num_test) {
  int n, m;
  cin >> n >> m;
  vector<int> a(n), b(m);
  vector<vector<int>> kek(n);
  for (int &i : a) cin >> i;
  for (int &i : b) cin >> i;
  for (int i = 0; i < n; i++)
    for (int j : b) kek[i].push_back(a[i] & j);
  for (int mask = 0; mask < (1 << 9); mask++) {
    bool ny = 1;
    for (int i = 0; i < n; i++) {
      bool loc = 0;
      for (int x : kek[i])
        if ((mask | x) == mask) {
          loc = 1;
          break;
        }
      if (!loc) {
        ny = 0;
        break;
      }
    }
    if (ny) {
      cout << mask << endl;
      return;
    }
  }
}
signed main() {
  ios_base::sync_with_stdio(NULL);
  cin.tie(NULL);
  cout.tie(NULL);
  cout << fixed << setprecision(10);
  srand(time(NULL));
  int test = 1;
  for (int i = 1; i <= test; i++) Solve(i);
}
