#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;
}