#include <bits/stdc++.h>
using namespace std;
 
// ------------------------------------------------------------
// Bài toán: Đếm cặp (i, j) sao cho (a_i | a_j) <= x
// Ý tưởng: 
//   - Giữ lại chỉ các bit mà x bật (gọi là k bit).
//   - Nén mỗi a_i thành mask k-bit (chỉ gồm các bit có trong x).
//   - SOS DP đếm số a_i là submask của mỗi mask.
// ------------------------------------------------------------
 
int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
 
    int n; long long x;
    cin >> n >> x;
 
    // Bước 1. Lưu vị trí các bit bật của x
    vector<int> bits;
    for (int b = 0; b < 30; ++b)
        if (x >> b & 1)
            bits.push_back(b);
 
    int k = bits.size();                  // số bit bật của x
    int full_mask = (1 << k);             // chỉ cần duyệt các submask của x
    vector<int> freq(full_mask, 0);
 
    // Bước 2. Nén mỗi a_i thành mask con của x
    for (int i = 0; i < n; ++i) {
        long long a; cin >> a;
        int mask = 0;
        for (int j = 0; j < k; ++j)
            if (a >> bits[j] & 1)
                mask |= (1 << j);
        if ((a | x) == x)   // chỉ giữ các số không có bit ngoài x
            freq[mask]++;
    }
 
    // Bước 3. SOS DP: cnt[m] = số lượng a_i là submask của m
    vector<long long> cnt(freq.begin(), freq.end());
    for (int b = 0; b < k; ++b)
        for (int mask = 0; mask < full_mask; ++mask)
            if (mask >> b & 1)
                cnt[mask] += cnt[mask ^ (1 << b)];
 
    // Bước 4. Đếm số cặp có OR <= x (tức OR là submask của x)
    long long ans = 0;
    for (int mask = 0; mask < full_mask; ++mask) {
        long long c = cnt[mask];
        ans += c * (c - 1) / 2;
    }
 
    cout << ans << "\n";
}