http://poj.org/problem?id=1321
import java.util.Scanner;
import java.util.Stack;
public class Main{
public static char[][] a = new char[15][15];
public static int[] vis = new int [15];
public static int cnt,n,k,sum;
public static void dfs(int s) {
if(cnt==k) {sum ++; return;}
else if(s>=n) return;
else {
for(int i=0;i<n;i++){
if(a[s][i]=='#'&&vis[i]==0){
vis[i] = 1;
cnt++;
dfs(s+1);
cnt--;
vis[i] = 0;
}
}
}
dfs(s+1);
}
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
while(scanner.hasNext()){
sum = 0;
n = scanner.nextInt();
k = scanner.nextInt();
for(int i=0;i<n;i++){
String t = scanner.next();
for(int j=0;j<n;j++){
a[i][j] = t.charAt(j);
}
}
if(n==-1) break;
dfs(0);
System.out.println(sum);
}
}
}