<span style="font-family: Arial, Helvetica, sans-serif;">#include <cstdlib></span>
#include <cstdio>
#include <iostream>
using namespace std;
#pragma warning(disable:4996)
int puzzle[20][20];
int press[20][20];
int n;
void enumate();
bool guess();
bool failed();
int main()
{
int cases, r, c, count;
scanf("%d", &cases);
for (int j = 0; j < cases;j++)
{
count = 0;
scanf("%d", &n);
for (r = 0; r < n + 1; r++)
{
press[r][0] = press[r][n + 1] = 0;
}
for (c = 1; c < n + 1; c++)
press[0][c] = 0;
char a;
for (r = 1; r < n + 1;r++)
for (c = 1; c < n + 1; c++)
{
//scanf("%c", &a);
cin >> a;
//cout << a << endl;
if (a == 'y')
puzzle[r][c] = 0;
else if (a == 'w')
puzzle[r][c] = 1;
}
enumate();
if (failed() && n > 1)//只有一组数据时会出错
printf("inf\n");
else
{
for (r = 1; r < n + 1; r++)
{
for (c = 1; c < n + 1; c++)
{
if (press[r][c] == 1)
count++;
}
}
printf("%d\n", count);
}
}
return 0;
}
void enumate()
{
int c;
for (c = 1; c < n + 1; c++)
press[1][c] = 0;
while (guess() == false)
{
if (failed())
break;
press[1][1]++;
c = 1;
while (press[1][c]>1)
{
press[1][c] = 0;
c++;
press[1][c]++;
}
}
return;
}
bool guess()
{
int c, r;
for (r = 1; r < n;r++)
for (c = 1; c < n + 1; c++)
press[r + 1][c] = (puzzle[r][c] + press[r][c] + press[r - 1][c] + press[r][c - 1] + press[r][c + 1]) % 2;
for (c = 1; c < n + 1;c++)
if ((press[n][c - 1] + press[n][c] + press[n][c + 1] + press[n - 1][c]) % 2 != puzzle[n][c])
return false;
return true;
}
inline bool failed()
{
int c;
bool failure = true;
for (c = 1; c < n + 1;c++)
if (press[1][c] == 0)
failure = false;
return failure;
}