#include <iostream>
using namespace std;
int main()
{
int n,m,count=0;
cin >> n;
// n*n矩阵,向四周传染,为避免越界,创建数组时四周各向外扩一行
char x[n+2][n+2];
// 数据只填充在内部的n行、列中,最外围只为了避免越界
for(int i=1;i<n+1;i++)
{
for(int j=1;j<n+1;j++) cin >> x[i][j];
}
cin >> m;
// m天后,实际应该传染了m-1天
for(int i=0;i<m-1;i++)
{
// 将得流感人员(@)周边的入住人员标记为被感染(!)
// 先标记,不直接设定为传染人员@,不然会导致后面的遍历出错
for(int i=1;i<n+1;i++)
{
for(int j=1;j<n+1;j++)
{
if(x[i][j]=='@')
{
if(x[i-1][j]=='.') x[i-1][j]='!';
if(x[i][j-1]=='.') x[i][j-1]='!';
if(x[i][j+1]=='.') x[i][j+1]='!';
if(x[i+1][j]=='.') x[i+1][j]='!';
}
}
}
// 更新情况,将被感染人员标记为得流感人员@
for(int i=1;i<n+1;i++)
{
for(int j=1;j<n+1;j++)
{
if(x[i][j]=='!') x[i][j]='@';
}
}
}
// 统计结果
for(int i=1;i<n+1;i++)
for(int j=1;j<n+1;j++)
if(x[i][j]=='@') count++;
cout << count;
}