1 #include <iostream>
2 #include <cstdio>
3 #include <cstring>
4 using namespace std;
5 const int Ni = 60;
6 bool vis[Ni][Ni];
7 char map[Ni][Ni];
8 int n;
9 void Init()
10 {
11 memset(vis,0,sizeof(vis));
12 for(int i=0;i<n;i++)
13 scanf("%s",map[i]);
14 }
15 int pushdown(int i,int j)
16 {
17 int k;
18 for(k=0;i+k<n;k++) if(map[i+k][j]=='#')
19 vis[i+1][j]=1;
20 else break;
21 return k;
22 }
23 int pushup(int i,int j)
24 {
25 int k;
26 for(k=0;i-k>=0;k++) if(map[i-k][j]=='#')
27 vis[i-k][j]=1;
28 else break;
29 return k;
30 }
31 int pushleft(int i,int j)
32 {
33 int k,flg=1;
34 for(k=0;j-k>=0;k++) if(map[i][j-k]=='#')
35 {
36 if(k&&(pushdown(i,j-k)!=1||pushup(i,j-k)!=1)) flg=0;
37 vis[i][j-k]=1;
38 }
39 else break;
40 if(flg) return k;
41 else return 0;
42 }
43 int pushright(int i,int j)
44 {
45 int k,flg=1;
46 for(k=0;j+k<n;k++) if(map[i][j+k]=='#')
47 {
48 if(k&&(pushdown(i,j+k)!=1||pushup(i,j+k)!=1)) flg=0;
49 vis[i][j+k]=1;
50 }
51 else break;
52 if(flg) return k;
53 else return 0;
54 }
55 bool ok(int i,int j)
56 {
57 int l,r,fd=1;
58 int d=pushdown(i,j);
59 if(!(d&1)||d==1) fd=0;
60 for(int k=0;k<d;k++)
61 {
62 l=pushleft(i+k,j)-1;
63 r=pushright(i+k,j)-1;
64 if(k==d/2)
65 {
66 if(l!=d/2||r!=d/2) fd=0;
67 }
68 else if(l!=0||r!=0)
69 fd=0;
70 }
71 return fd;
72 }
73 int finds()
74 {
75 int ans=0,i,j;
76 for(i=0;i<n;i++)
77 for(j=0;j<n;j++)
78 {
79 if(map[i][j]=='#'&&(!vis[i][j])&&ok(i,j)) ans++;
80 }
81 return ans;
82 }
83 int main()
84 {
85 while(scanf("%d",&n),n)
86 {
87 Init();
88 printf("%d\n",finds());
89 }
90 return 0;
91 }