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 ****************************************************************/