Buggy python submission (verdict: Runtime Error):
n,k = map(int,input().split())
a=list(map(int,input().split()))
#input

from collections import defaultdict
counter=defaultdict(int)
#桁ごとに１の数を数える辞書型

def makebit(a):
    return bin(a)[2:]
#数値型から２進数の文字列型を返す関数

def count(a):
    l=len(a)
    for i in range(1,l+1):
        if a[-i]=='1':
            counter[i]+=1
    return
#２進数の文字列型から、１の場所と数を数える関数

for i in range(len(a)):
    count(makebit(a[i]))
#inputしたデータをcounterに整理する

kbit=makebit(k)
#kの2進数表記
onetime=kbit.count('1')
#kに何回１が出現するか(後述)
maxlenth=max(counter)
#Aiの最も大きい桁

kaijo=[]
for i in range(maxlenth+1):
    kaijo.append(2**i)
#２の階乗のリスト

for i in range(1,1+max(maxlenth,len(kbit))):
    if counter[i]==0:
        counter[i]=0

if maxlenth>len(kbit):
    kbit='0'*(maxlenth-len(kbit))+kbit
elif maxlenth<len(kbit):
    maxlenth=len(kbit)
#maxlenthまでで登録されていないkeyを登録

#メインとなるループ関数
def search(kbit,default,ans,before,counter):
    if kbit.count('1')==0:
        dlenth=len(kbit)
        for keta in counter:
            if keta>before:continue
            elif keta<=dlenth:
                default+=counter[keta]*kaijo[keta-1]
        if default>ans:ans=default
        return ans
    dlenth=len(kbit)-kbit.index('1')
    now=default
    newcounter=counter.copy()
    for keta in counter:
        if keta>before:continue
        elif keta>dlenth:
            default+=counter[keta]*kaijo[keta-1]
            now+=counter[keta]*kaijo[keta-1]
            newcounter.pop(keta)
        elif keta==dlenth:
            default+=(n-counter[keta])*kaijo[keta-1]
            now+=counter[keta]*kaijo[keta-1]
            newcounter.pop(keta)
        elif keta<dlenth:now+=max(n-counter[keta],counter[keta])*kaijo[keta-1]
    if kbit.index('1')==len(kbit)-1:
        now=default-(n-counter[1])
        now+=max(n-counter[1],counter[1])
        if now>ans:ans=now
        return ans
    if now>ans:ans=now
    idx=kbit.index('1')
    kbit=kbit[idx+1:]
    return search(kbit,default,ans,dlenth,newcounter)
print(search(kbit,0,0,maxlenth+1,counter))

Fixed submission:
n,k = map(int,input().split())
a=list(map(int,input().split()))
#input

from collections import defaultdict
counter=defaultdict(int)
#桁ごとに１の数を数える辞書型

def makebit(a):
    return bin(a)[2:]
#数値型から２進数の文字列型を返す関数

def count(a):
    l=len(a)
    for i in range(1,l+1):
        if a[-i]=='1':
            counter[i]+=1
    return
#２進数の文字列型から、１の場所と数を数える関数

for i in range(len(a)):
    count(makebit(a[i]))
#inputしたデータをcounterに整理する

kbit=makebit(k)
#kの2進数表記
onetime=kbit.count('1')
#kに何回１が出現するか(後述)
if len(counter)>0:
    maxlenth=max(counter)
elif len(counter)==0:
    maxlenth=0
#Aiの最も大きい桁


#２の階乗のリスト

for i in range(1,1+max(maxlenth,len(kbit))):
    if counter[i]==0:
        counter[i]=0

if maxlenth>len(kbit):
    kbit='0'*(maxlenth-len(kbit))+kbit
elif maxlenth<len(kbit):
    maxlenth=len(kbit)
    
kaijo=[]
for i in range(maxlenth+1):
    kaijo.append(2**i)
#maxlenthまでで登録されていないkeyを登録

#メインとなるループ関数
def search(kbit,default,ans,before,counter):
    if kbit.count('1')==0:
        dlenth=len(kbit)
        for keta in counter:
            if keta>before:continue
            elif keta<=dlenth:
                default+=counter[keta]*kaijo[keta-1]
        if default>ans:ans=default
        return ans
    dlenth=len(kbit)-kbit.index('1')
    now=default
    newcounter=counter.copy()
    for keta in counter:
        if keta>before:continue
        elif keta>dlenth:
            default+=counter[keta]*kaijo[keta-1]
            now+=counter[keta]*kaijo[keta-1]
            newcounter.pop(keta)
        elif keta==dlenth:
            default+=(n-counter[keta])*kaijo[keta-1]
            now+=counter[keta]*kaijo[keta-1]
            newcounter.pop(keta)
        elif keta<dlenth:now+=max(n-counter[keta],counter[keta])*kaijo[keta-1]
    if kbit.index('1')==len(kbit)-1:
        now=default-(n-counter[1])
        now+=max(n-counter[1],counter[1])
        if now>ans:ans=now
        return ans
    if now>ans:ans=now
    idx=kbit.index('1')
    kbit=kbit[idx+1:]
    return search(kbit,default,ans,dlenth,newcounter)
print(search(kbit,0,0,maxlenth+1,counter))

Buggy python submission (verdict: Runtime Error):
n,k = map(int,input().split())
a=list(map(int,input().split()))
#input

from collections import defaultdict
counter=defaultdict(int)
#桁ごとに１の数を数える辞書型

def makebit(a):
    return bin(a)[2:]
#数値型から２進数の文字列型を返す関数

def count(a):
    l=len(a)
    for i in range(1,l+1):
        if a[-i]=='1':
            counter[i]+=1
    return
#２進数の文字列型から、１の場所と数を数える関数

for i in range(len(a)):
    count(makebit(a[i]))
#inputしたデータをcounterに整理する

kbit=makebit(k)
#kの2進数表記
onetime=kbit.count('1')
#kに何回１が出現するか(後述)
maxlenth=max(counter)
#Aiの最も大きい桁

kaijo=[]
for i in range(maxlenth+1):
    kaijo.append(2**i)
#２の階乗のリスト

for i in range(1,1+max(maxlenth,len(kbit))):
    if counter[i]==0:
        counter[i]=0

if maxlenth>len(kbit):
    kbit='0'*(maxlenth-len(kbit))+kbit
#maxlenthまでで登録されていないkeyを登録

#メインとなるループ関数
def search(kbit,default,ans,before,counter):
    if kbit.count('1')==0:
        dlenth=len(kbit)
        for keta in counter:
            if keta>before:continue
            elif keta<=dlenth:
                default+=counter[keta]*kaijo[keta-1]
        if default>ans:ans=default
        return ans
    dlenth=len(kbit)-kbit.index('1')
    now=default
    newcounter=counter.copy()
    for keta in counter:
        if keta>before:continue
        elif keta>dlenth:
            default+=counter[keta]*kaijo[keta-1]
            now+=counter[keta]*kaijo[keta-1]
            newcounter.pop(keta)
        elif keta==dlenth:
            default+=(n-counter[keta])*kaijo[keta-1]
            now+=counter[keta]*kaijo[keta-1]
            newcounter.pop(keta)
        elif keta<dlenth:now+=max(n-counter[keta],counter[keta])*kaijo[keta-1]
    if kbit=='1':
        now=default-(n-counter[1])
        now+=max(n-counter[1],counter[1])
        if now>ans:ans=now
        return ans
    if now>ans:ans=now
    if '1' in kbit[1:]:
        idx=kbit.index('1',1)
        kbit=kbit[idx:]
    elif '1' not in kbit[1:]:
        kbit=kbit[1:]
    return search(kbit,default,ans,dlenth,newcounter)
print(search(kbit,0,0,maxlenth+1,counter))

Fixed submission:
n,k = map(int,input().split())
a=list(map(int,input().split()))
#input

from collections import defaultdict
counter=defaultdict(int)
#桁ごとに１の数を数える辞書型

def makebit(a):
    return bin(a)[2:]
#数値型から２進数の文字列型を返す関数

def count(a):
    l=len(a)
    for i in range(1,l+1):
        if a[-i]=='1':
            counter[i]+=1
    return
#２進数の文字列型から、１の場所と数を数える関数

for i in range(len(a)):
    count(makebit(a[i]))
#inputしたデータをcounterに整理する

kbit=makebit(k)
#kの2進数表記
onetime=kbit.count('1')
#kに何回１が出現するか(後述)
if len(counter)>0:
    maxlenth=max(counter)
elif len(counter)==0:
    maxlenth=0
#Aiの最も大きい桁


#２の階乗のリスト

for i in range(1,1+max(maxlenth,len(kbit))):
    if counter[i]==0:
        counter[i]=0

if maxlenth>len(kbit):
    kbit='0'*(maxlenth-len(kbit))+kbit
elif maxlenth<len(kbit):
    maxlenth=len(kbit)
    
kaijo=[]
for i in range(maxlenth+1):
    kaijo.append(2**i)
#maxlenthまでで登録されていないkeyを登録

#メインとなるループ関数
def search(kbit,default,ans,before,counter):
    if kbit.count('1')==0:
        dlenth=len(kbit)
        for keta in counter:
            if keta>before:continue
            elif keta<=dlenth:
                default+=counter[keta]*kaijo[keta-1]
        if default>ans:ans=default
        return ans
    dlenth=len(kbit)-kbit.index('1')
    now=default
    newcounter=counter.copy()
    for keta in counter:
        if keta>before:continue
        elif keta>dlenth:
            default+=counter[keta]*kaijo[keta-1]
            now+=counter[keta]*kaijo[keta-1]
            newcounter.pop(keta)
        elif keta==dlenth:
            default+=(n-counter[keta])*kaijo[keta-1]
            now+=counter[keta]*kaijo[keta-1]
            newcounter.pop(keta)
        elif keta<dlenth:now+=max(n-counter[keta],counter[keta])*kaijo[keta-1]
    if kbit.index('1')==len(kbit)-1:
        now=default-(n-counter[1])
        now+=max(n-counter[1],counter[1])
        if now>ans:ans=now
        return ans
    if now>ans:ans=now
    idx=kbit.index('1')
    kbit=kbit[idx+1:]
    return search(kbit,default,ans,dlenth,newcounter)
print(search(kbit,0,0,maxlenth+1,counter))

Buggy python submission (verdict: Runtime Error):
n,k = map(int,input().split())
a=list(map(int,input().split()))
#input

from collections import defaultdict
counter=defaultdict(int)
#桁ごとに１の数を数える辞書型

def makebit(a):
    return bin(a)[2:]
#数値型から２進数の文字列型を返す関数

def count(a):
    l=len(a)
    for i in range(1,l+1):
        if a[-i]=='1':
            counter[i]+=1
    return
#２進数の文字列型から、１の場所と数を数える関数

for i in range(len(a)):
    count(makebit(a[i]))
#inputしたデータをcounterに整理する

kbit=makebit(k)
#kの2進数表記
onetime=kbit.count('1')
#kに何回１が出現するか(後述)
maxlenth=max(counter)
#Aiの最も大きい桁

kaijo=[]
for i in range(maxlenth+1):
    kaijo.append(2**i)
#２の階乗のリスト

for i in range(1,1+max(maxlenth,len(kbit))):
    if counter[i]==0:
        counter[i]=0

if maxlenth>len(kbit):
    kbit='0'*(maxlenth-len(kbit))+kbit
#maxlenthまでで登録されていないkeyを登録

#メインとなるループ関数
def search(kbit,default,ans,before,counter):
    if kbit.count('1')==0:
        dlenth=len(kbit)
        for keta in counter:
            if keta>before:continue
            elif keta<=dlenth:
                default+=counter[keta]*kaijo[keta-1]
        if default>ans:ans=default
        return ans
    dlenth=len(kbit)-kbit.index('1')
    now=default
    newcounter=counter.copy()
    for keta in counter:
        if keta>before:continue
        elif keta>dlenth:
            default+=counter[keta]*kaijo[keta-1]
            now+=counter[keta]*kaijo[keta-1]
            newcounter.pop(keta)
        elif keta==dlenth:
            default+=(n-counter[keta])*kaijo[keta-1]
            now+=counter[keta]*kaijo[keta-1]
            newcounter.pop(keta)
        elif keta<dlenth:now+=max(n-counter[keta],counter[keta])*kaijo[keta-1]
    if kbit=='1':
        now=default-(n-counter[1])
        now+=max(n-counter[1],counter[1])
        if now>ans:ans=now
        return ans
    if now>ans:ans=now
    if '1' in kbit[1:]:
        idx=kbit.index('1',1)
        kbit=kbit[idx:]
    elif '1' not in kbit:
        kbit=kbit[1:]
    return search(kbit,default,ans,dlenth,newcounter)
print(search(kbit,0,0,maxlenth+1,counter))

Fixed submission:
n,k = map(int,input().split())
a=list(map(int,input().split()))
#input

from collections import defaultdict
counter=defaultdict(int)
#桁ごとに１の数を数える辞書型

def makebit(a):
    return bin(a)[2:]
#数値型から２進数の文字列型を返す関数

def count(a):
    l=len(a)
    for i in range(1,l+1):
        if a[-i]=='1':
            counter[i]+=1
    return
#２進数の文字列型から、１の場所と数を数える関数

for i in range(len(a)):
    count(makebit(a[i]))
#inputしたデータをcounterに整理する

kbit=makebit(k)
#kの2進数表記
onetime=kbit.count('1')
#kに何回１が出現するか(後述)
if len(counter)>0:
    maxlenth=max(counter)
elif len(counter)==0:
    maxlenth=0
#Aiの最も大きい桁


#２の階乗のリスト

for i in range(1,1+max(maxlenth,len(kbit))):
    if counter[i]==0:
        counter[i]=0

if maxlenth>len(kbit):
    kbit='0'*(maxlenth-len(kbit))+kbit
elif maxlenth<len(kbit):
    maxlenth=len(kbit)
    
kaijo=[]
for i in range(maxlenth+1):
    kaijo.append(2**i)
#maxlenthまでで登録されていないkeyを登録

#メインとなるループ関数
def search(kbit,default,ans,before,counter):
    if kbit.count('1')==0:
        dlenth=len(kbit)
        for keta in counter:
            if keta>before:continue
            elif keta<=dlenth:
                default+=counter[keta]*kaijo[keta-1]
        if default>ans:ans=default
        return ans
    dlenth=len(kbit)-kbit.index('1')
    now=default
    newcounter=counter.copy()
    for keta in counter:
        if keta>before:continue
        elif keta>dlenth:
            default+=counter[keta]*kaijo[keta-1]
            now+=counter[keta]*kaijo[keta-1]
            newcounter.pop(keta)
        elif keta==dlenth:
            default+=(n-counter[keta])*kaijo[keta-1]
            now+=counter[keta]*kaijo[keta-1]
            newcounter.pop(keta)
        elif keta<dlenth:now+=max(n-counter[keta],counter[keta])*kaijo[keta-1]
    if kbit.index('1')==len(kbit)-1:
        now=default-(n-counter[1])
        now+=max(n-counter[1],counter[1])
        if now>ans:ans=now
        return ans
    if now>ans:ans=now
    idx=kbit.index('1')
    kbit=kbit[idx+1:]
    return search(kbit,default,ans,dlenth,newcounter)
print(search(kbit,0,0,maxlenth+1,counter))

Buggy python submission (verdict: Time Limit Exceeded):
n,k = map(int,input().split())
a=list(map(int,input().split()))
from collections import defaultdict
counter=defaultdict(int)
def makebit(a):
    return bin(a)[2:]

def count(a):
    l=len(a)
    for i in range(1,l+1):
        if a[-i]=='1':
            counter[i]+=1
    return

for i in range(len(a)):
    count(makebit(a[i]))

kbit=makebit(k)
maxlenth=max(counter)
if maxlenth<len(kbit):
    for i in range(maxlenth+1,len(kbit)+1):
        counter[i]=0


ans=0
for keta in counter:
    if keta>=len(kbit):
        ans+=counter[keta]*(2**(keta-1))
    elif keta<len(kbit):
        ans+=max(n-counter[keta],counter[keta])*(2**(keta-1))

def calc(x):
    ans=0
    for keta in counter:
        if keta>len(x):
            ans+=counter[keta]*(2**(keta-1))
        elif keta<=len(x):
            if x[-keta]=='0':
                ans+=counter[keta]*(2**(keta-1))
            elif x[-keta]=='1':
                ans+=(n-counter[keta])*(2**(keta-1))
    return ans

start='1'+'0'*(len(kbit)-1)
for i in range(int(start,2),k+1):
    x=makebit(i)
    now=calc(x)
    if now>ans:ans=now



print(ans)

Fixed submission:
n,k = map(int,input().split())
a=list(map(int,input().split()))
#input

from collections import defaultdict
counter=defaultdict(int)
#桁ごとに１の数を数える辞書型

def makebit(a):
    return bin(a)[2:]
#数値型から２進数の文字列型を返す関数

def count(a):
    l=len(a)
    for i in range(1,l+1):
        if a[-i]=='1':
            counter[i]+=1
    return
#２進数の文字列型から、１の場所と数を数える関数

for i in range(len(a)):
    count(makebit(a[i]))
#inputしたデータをcounterに整理する

kbit=makebit(k)
#kの2進数表記
onetime=kbit.count('1')
#kに何回１が出現するか(後述)
if len(counter)>0:
    maxlenth=max(counter)
elif len(counter)==0:
    maxlenth=0
#Aiの最も大きい桁


#２の階乗のリスト

for i in range(1,1+max(maxlenth,len(kbit))):
    if counter[i]==0:
        counter[i]=0

if maxlenth>len(kbit):
    kbit='0'*(maxlenth-len(kbit))+kbit
elif maxlenth<len(kbit):
    maxlenth=len(kbit)
    
kaijo=[]
for i in range(maxlenth+1):
    kaijo.append(2**i)
#maxlenthまでで登録されていないkeyを登録

#メインとなるループ関数
def search(kbit,default,ans,before,counter):
    if kbit.count('1')==0:
        dlenth=len(kbit)
        for keta in counter:
            if keta>before:continue
            elif keta<=dlenth:
                default+=counter[keta]*kaijo[keta-1]
        if default>ans:ans=default
        return ans
    dlenth=len(kbit)-kbit.index('1')
    now=default
    newcounter=counter.copy()
    for keta in counter:
        if keta>before:continue
        elif keta>dlenth:
            default+=counter[keta]*kaijo[keta-1]
            now+=counter[keta]*kaijo[keta-1]
            newcounter.pop(keta)
        elif keta==dlenth:
            default+=(n-counter[keta])*kaijo[keta-1]
            now+=counter[keta]*kaijo[keta-1]
            newcounter.pop(keta)
        elif keta<dlenth:now+=max(n-counter[keta],counter[keta])*kaijo[keta-1]
    if kbit.index('1')==len(kbit)-1:
        now=default-(n-counter[1])
        now+=max(n-counter[1],counter[1])
        if now>ans:ans=now
        return ans
    if now>ans:ans=now
    idx=kbit.index('1')
    kbit=kbit[idx+1:]
    return search(kbit,default,ans,dlenth,newcounter)
print(search(kbit,0,0,maxlenth+1,counter))

Buggy python submission (verdict: Time Limit Exceeded):
n,k = map(int,input().split())
a=list(map(int,input().split()))
def makebit(a):
    ans=''
    while a>0:
        ans=str(a%2)+ans
        a=a//2
    return ans

def makexor(a,b):
    l=max(len(a),len(b))
    if len(a)<l:a=(l-len(a))*'0'+a
    if len(b)<l:b=(l-len(b))*'0'+b
    ans=''
    for i in range(l):
        if a[i]!=b[i]:ans+='1'
        elif a[i]==b[i]:ans+='0'
    return ans

def makenum(a):
    ans=0
    for i in range(len(a)):
        ans+=int(a[-i-1])*2**i
    return ans

for i in range(len(a)):
    a[i]=makebit(a[i])

def check(x,a):
    ans=0
    for i in a:
        ans+=makenum(makexor(x,i))
    return ans

ans=check('0',a)
for i in range(1,k+1):
    x=makebit(i)
    res=check(x,a)
    if res>ans:ans=res

print(ans)

Fixed submission:
n,k = map(int,input().split())
a=list(map(int,input().split()))
#input

from collections import defaultdict
counter=defaultdict(int)
#桁ごとに１の数を数える辞書型

def makebit(a):
    return bin(a)[2:]
#数値型から２進数の文字列型を返す関数

def count(a):
    l=len(a)
    for i in range(1,l+1):
        if a[-i]=='1':
            counter[i]+=1
    return
#２進数の文字列型から、１の場所と数を数える関数

for i in range(len(a)):
    count(makebit(a[i]))
#inputしたデータをcounterに整理する

kbit=makebit(k)
#kの2進数表記
onetime=kbit.count('1')
#kに何回１が出現するか(後述)
if len(counter)>0:
    maxlenth=max(counter)
elif len(counter)==0:
    maxlenth=0
#Aiの最も大きい桁


#２の階乗のリスト

for i in range(1,1+max(maxlenth,len(kbit))):
    if counter[i]==0:
        counter[i]=0

if maxlenth>len(kbit):
    kbit='0'*(maxlenth-len(kbit))+kbit
elif maxlenth<len(kbit):
    maxlenth=len(kbit)
    
kaijo=[]
for i in range(maxlenth+1):
    kaijo.append(2**i)
#maxlenthまでで登録されていないkeyを登録

#メインとなるループ関数
def search(kbit,default,ans,before,counter):
    if kbit.count('1')==0:
        dlenth=len(kbit)
        for keta in counter:
            if keta>before:continue
            elif keta<=dlenth:
                default+=counter[keta]*kaijo[keta-1]
        if default>ans:ans=default
        return ans
    dlenth=len(kbit)-kbit.index('1')
    now=default
    newcounter=counter.copy()
    for keta in counter:
        if keta>before:continue
        elif keta>dlenth:
            default+=counter[keta]*kaijo[keta-1]
            now+=counter[keta]*kaijo[keta-1]
            newcounter.pop(keta)
        elif keta==dlenth:
            default+=(n-counter[keta])*kaijo[keta-1]
            now+=counter[keta]*kaijo[keta-1]
            newcounter.pop(keta)
        elif keta<dlenth:now+=max(n-counter[keta],counter[keta])*kaijo[keta-1]
    if kbit.index('1')==len(kbit)-1:
        now=default-(n-counter[1])
        now+=max(n-counter[1],counter[1])
        if now>ans:ans=now
        return ans
    if now>ans:ans=now
    idx=kbit.index('1')
    kbit=kbit[idx+1:]
    return search(kbit,default,ans,dlenth,newcounter)
print(search(kbit,0,0,maxlenth+1,counter))