#include<bits/stdc++.h>
using namespace std;
int n,k,ejz[55],ejzzc[55],p,gd[55],ejzc,jilux;
void erjinzhi(int x){
while(x>0){
ejzzc[++p]=x%2;
x/=2;
}
for(int i=1;i<=p;i++){
ejz[p-i+1]=ejzzc[i];
}
}
int qsort(int a,int b){
int ans=1;
while(b>0){
if(b%2==1){
ans*=a;
}
a*=a;
b/=2;
}
return ans;
}
int jisuan(int x){
int ans=0;
for(int i=x-1;i>=1;i--){
if(ejz[i]==0){
ans+=qsort(2,p-i);
}else{
break;
}
}
ans+=qsort(2,p-x);
for(int i=x+1;i<=p;i++){
if(ejz[i]==1){
ans-=qsort(2,p-i);
}
}
return ans;
}
int main(){
scanf("%d%d",&n,&k);
erjinzhi(n);
for(int i=1;i<=p;i++){
if(ejz[i]==1){
ejzc++;
}
if(ejzc>k){
cout<<jisuan(i);
return 0;
}
}
cout<<0;
return 0;
}