import java.math.BigInteger;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Scanner;

public class Hindenburg {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        int N = sc.nextInt();
        int K = sc.nextInt();
        ArrayList<BigInteger> lista = new ArrayList<>();
        int[] info = new int[32];

        for (int i = 0; i < N; i++) {
            lista.add(new BigInteger(sc.nextInt() + ""));

            for (int j = 0; j < 32; j++) {
                info[j] += lista.get(i).testBit(j) ? 1 : 0;
            }
        }

        int mask = 0b100000000000000000000000000000;
        int res = 0;

        for (int nap = 0; nap < 30; nap++) {
            if (info[29-nap] < K) {
                mask >>= 1;
                continue;
            }

            ArrayList<BigInteger> bads = new ArrayList<>();
            for (int i = 0; i < lista.size(); i++) {
                if ((lista.get(i).intValue() & mask) == 0) {
                    bads.add(lista.get(i));
                }
            }

            if (lista.size() - bads.size() >= K) {
                res += mask;
                if (lista.size() - bads.size() == K) {
                    System.out.println(res);
                    System.exit(0);
                }

                lista.removeAll(bads);
            }

            mask >>= 1;
        }

        System.out.println(res);

    }

}

