var c:array[0..100,0..100]of longint;
fi,fo:text;
n,k:longint;
xau:string;
function t0(x:longint):longint;
var i,t:longint;
begin
t:=0;
for i:=1to x do
if xau[i]='0' then inc(t);
exit(t);
end;
function pht(n:longint):string;
var x:string;
begin
x:='';
while n<>0 do
begin
if n mod 2=0 then x:='0'+x
else x:='1'+x;
n:=n div 2;
end;
exit(x);
end;
procedure lam;
var j,t,i:longint;
kq,l:longint;
begin
while not eof(fi)do
begin
kq:=0;
readln(fi,n,k);
xau:=pht(n);
l:=length(xau);
t:=t0(l);
if (t=k) then inc(kq);
if k=1 then inc(kq);
if (n=0)then
begin
if k=1 then writeln(fo,'1')
else writeln(fo,'0');
continue;
end;
for i:=k to l-2 do
kq:=kq+c[i,k];
t:=0;
for i:=2to l-1 do
if xau[i]='1' then
begin
t:=t0(i);
if t>k then break
{ else
if t=k then
begin
for j:=i+1 to l do
if xau[i]='0' then break;
inc(kq,1);
end}
else
if t<k then
kq:=kq+c[l-i,k-t-1];
end;
writeln(fo,kq);
end;
end;
procedure tohop;
var i,j:longint;
begin
c[0,0]:=1;
for i:=1to 32 do
for j:=0 to i do
c[i,j]:=c[i-1,j]+c[i-1,j-1];
end;
begin
assign(fi,'t.inp');reset(fi);
assign(fo,'t.out');rewrite(fo);
tohop;
lam;
close(fi);close(fo);
end.
dmFyIGM6YXJyYXlbMC4uMTAwLDAuLjEwMF1vZiBsb25naW50OwogICAgZmksZm86dGV4dDsKICAgIG4sazpsb25naW50OwogICAgeGF1OnN0cmluZzsKCmZ1bmN0aW9uIHQwKHg6bG9uZ2ludCk6bG9uZ2ludDsKdmFyIGksdDpsb25naW50OwpiZWdpbgogIHQ6PTA7CiAgZm9yIGk6PTF0byB4IGRvCiAgIGlmIHhhdVtpXT0nMCcgdGhlbiBpbmModCk7CiAgZXhpdCh0KTsKZW5kOwoKZnVuY3Rpb24gcGh0KG46bG9uZ2ludCk6c3RyaW5nOwp2YXIgeDpzdHJpbmc7CmJlZ2luCiAgeDo9Jyc7CiAgd2hpbGUgbjw+MCBkbwogICBiZWdpbgogICAgIGlmIG4gbW9kIDI9MCB0aGVuIHg6PScwJyt4CiAgICAgZWxzZSB4Oj0nMScreDsKICAgICBuOj1uIGRpdiAyOwogICBlbmQ7CiAgZXhpdCh4KTsKZW5kOwoKcHJvY2VkdXJlIGxhbTsKdmFyIGosdCxpOmxvbmdpbnQ7CiAgICBrcSxsOmxvbmdpbnQ7CmJlZ2luCiAgIHdoaWxlIG5vdCBlb2YoZmkpZG8KICAgIGJlZ2luCiAgICAgIGtxOj0wOwogICAgICByZWFkbG4oZmksbixrKTsKICAgICAgeGF1Oj1waHQobik7CiAgICAgIGw6PWxlbmd0aCh4YXUpOwogICAgICB0Oj10MChsKTsKICAgICAgaWYgKHQ9aykgdGhlbiBpbmMoa3EpOwogICAgICBpZiBrPTEgdGhlbiBpbmMoa3EpOwogICAgICBpZiAobj0wKXRoZW4KICAgICAgIGJlZ2luCiAgICAgICAgIGlmIGs9MSB0aGVuIHdyaXRlbG4oZm8sJzEnKQogICAgICAgICBlbHNlIHdyaXRlbG4oZm8sJzAnKTsKICAgICAgICAgY29udGludWU7CiAgICAgICBlbmQ7CiAgICAgIGZvciBpOj1rIHRvIGwtMiBkbwogICAgICAga3E6PWtxK2NbaSxrXTsKICAgICAgdDo9MDsKICAgICAgZm9yIGk6PTJ0byBsLTEgZG8KICAgICAgIGlmIHhhdVtpXT0nMScgdGhlbgogICAgICAgIGJlZ2luCiAgICAgICAgIHQ6PXQwKGkpOwogICAgICAgICBpZiB0PmsgdGhlbiBicmVhawp7ICAgICAgICAgZWxzZQogICAgICAgICBpZiB0PWsgdGhlbgogICAgICAgICAgYmVnaW4KICAgICAgICAgIGZvciBqOj1pKzEgdG8gbCBkbwogICAgICAgICAgIGlmIHhhdVtpXT0nMCcgdGhlbiBicmVhazsKICAgICAgICAgIGluYyhrcSwxKTsKICAgICAgICAgIGVuZH0KICAgICAgICAgZWxzZQogICAgICAgICBpZiB0PGsgdGhlbgogICAgICAgICBrcTo9a3ErY1tsLWksay10LTFdOwogICAgICAgIGVuZDsKICAgICAgICB3cml0ZWxuKGZvLGtxKTsKICAgIGVuZDsKZW5kOwoKcHJvY2VkdXJlIHRvaG9wOwp2YXIgaSxqOmxvbmdpbnQ7CmJlZ2luCiAgIGNbMCwwXTo9MTsKICAgZm9yIGk6PTF0byAzMiBkbwogICAgZm9yIGo6PTAgdG8gaSBkbwogICAgIGNbaSxqXTo9Y1tpLTEsal0rY1tpLTEsai0xXTsKZW5kOwoKYmVnaW4KICAgYXNzaWduKGZpLCd0LmlucCcpO3Jlc2V0KGZpKTsKICAgYXNzaWduKGZvLCd0Lm91dCcpO3Jld3JpdGUoZm8pOwogICB0b2hvcDsKICAgbGFtOwogICBjbG9zZShmaSk7Y2xvc2UoZm8pOwplbmQuCgo=