n, k = map(int, input().split())
arr = list(map(int, input().split()))
reversedK = ~k 
edges = []
for i in range(n):
    if ((reversedK & arr[i]) != 0):
        edges.append(i)
edges.append(n)

def bits(arr, num, adder):
    added = 0
    for i in range(32):
        if ((num >> i) & 1):
            if (arr[i] == 0 and adder == 1):
                added += 1 << i 
            arr[i] += adder
            if (arr[i] == 0 and adder == -1):
                added -= 1 << i 
    return added

def getNum(arr):
    num = 0
    for i in range(32):
        if (arr[i]):
            num |= 1 << i
    return num

rez = 0
lastEdge = -1
for edge in edges:
    if (edge - lastEdge == 1): 
        lastEdge = edge
        continue
    
    i = lastEdge+1
    j = lastEdge+2
    bitsCount = [0] * 32
    bits(bitsCount, arr[i], 1)
    num = getNum(bitsCount)

    while (i < edge):
        while (j <= i or (j < n and num != k)):
            num += bits(bitsCount, arr[j], 1)
            j+=1
        # print(f"For i: {i}, j: {j}, num: {num}")
        if (num == k):
            rez += edge - j + 1 
            # print(f"Added {edge - j + 1}")
        else: break

        num += bits(bitsCount, arr[i], -1)
        i += 1

    lastEdge = edge

print(rez)