1 #include <iostream> 2 3 using namespace std; 4 5 int n,k; 6 char m[9][9]; 7 int a[9]; 8 9 void dfs(int cur,int k,int& tot) 10 { 11 if(k<0) return; 12 if(cur==n) 13 { 14 if(k==0) 15 tot++; 16 return ; 17 } 18 for(int i=0;i<n;i++) 19 { 20 if(m[cur][i]=='#'&&a[i]==0) 21 { 22 a[i]=1; 23 dfs(cur+1,k-1,tot); 24 a[i]=0; 25 } 26 } 27 dfs(cur+1,k,tot); 28 } 29 30 int main() 31 { 32 while(cin>>n>>k&&n!=-1&&k!=-1) 33 { 34 35 for(int i=0;i<n;i++) 36 { 37 for(int j=0;j<n;j++) 38 cin>>m[i][j]; 39 } 40 for(int i=0;i<n;i++) 41 a[i]=0; 42 43 int tot=0; 44 dfs(0,k,tot); 45 cout<<tot<<endl; 46 } 47 48 return 0; 49 }