#include<bits/stdc++.h>usingnamespace std;int n, k, ans, r[10], c[10], gn;
vector<int> grid;voiddfs(int u,int idx){if(k - u > gn - idx)return;if(u == k){ans++;return;}for(int i = idx; i < gn; i++){int x = grid[i];if(!r[x / n]&&!c[x % n]){
r[x / n]= c[x % n]=1;dfs(u +1, i +1);
r[x / n]= c[x % n]=0;}}}intsolve(){
grid.clear(); ans =0;char c;for(int i =0; i < n * n; i++)if(cin >> c && c =='#') grid.push_back(i);
gn = grid.size();dfs(0,0);return ans;}intmain(){while(cin >> n >> k && n !=-1) cout <<solve()<< endl;return0;}