uses crt;
var f:text; n,k,d:longint;
b:array[1..100000]of longint;
function kt:boolean;
var i:longint;
begin
kt:=true;
for i:=2 to k do
if b[i]<=b[i-1] then kt:=false;
end;
procedure print;
var i:longint;
begin
if kt then
begin
write(f,'{');
for i:=1 to k-1 do write(f,b[i],',');
write(f,b[k]);
inc(d);
writeln(f,'}');
end;
end;
function dequy(a:longint):longint;
var i:longint;
begin
if a=k+1 then print else
for i:=1 to n Do
begin
b[a]:=i;
dequy(a+1);
end;
end;
begin
clrscr;
assign(f,'SILICON.INP');reset(f);
readln(f,n,k);
close(f);
assign(f,'SILICON.OUT');rewrite(f);
dequy(1);
writeln(f,d);
close(f);
readln
end.