#include<iostream> #include<cstring> using namespace std; int m,k,ans; char s[1010][1010]; int vis[1010][1010]; bool check(int x,int y) { for(int i=0;i<m;i++) if((i!=x&&vis[i][y]==1)||(i!=y&&vis[x][i]==1)) return false; return true; } void dfs(int x,int y,int v) { if(x>=0&&x<m&&y<m&&y>=0&&vis[x][y]==0&&s[x][y]=='#'&&check(x,y)) { vis[x][y]=1; if(v==k)ans++; for(int i=0;i<m;i++) for(int j=x+1;j<m;j++) if(s[j][i]=='#') dfs(j,i,v+1); vis[x][y]=0; } return; } int main() { while(cin>>m>>k&&m!=-1&&k!=-1) { ans=0; for(int i=0;i<m;i++)cin>>s[i]; for(int i=0;i<m;i++) for(int j=0;j<m;j++) if(s[i][j]=='#') dfs(i,j,1); cout<<ans<<endl; } return 0; }