var
a:array[1..8,1..8]of char;
c:array[1..8]of boolean;
i,j,n,m,k,ans,l:longint;
procedure go(t:longint);
var
i:longint;
begin
if t>n then exit;
for i:=1 to n do
if c[i] and (a[t,i]='#') then
begin
c[i]:=false;
inc(m);
if m=k then begin inc(ans);end;
if m<k then go(t+1);
dec(m);
c[i]:=true;
end;
if m<k then go(t+1);
end;
begin
readln(n,k);
while not((n=-1)and(k=-1)) do
begin
fillchar(c,sizeof(c),true);
for i:=1 to n do
begin
for j:=1 to n do
read(a[i,j]);
readln;
end;
ans:=0;
m:=0;
go(1);
writeln(ans);
readln(n,k);
end;
end.
/**************************************************************
Problem: 2127
User: admin
Language: Pascal
Result: Wrong Answer
****************************************************************/