#include <bits/stdc++.h>
#define i64 long long
#define rep(i,l,r) for(int i=(l);i<=(r);i++)
#define fdn(i,r,l) for(int i=(r);i>=(l);i--)
#define pii pair<int,int>
using namespace std;
typedef long long ll;
typedef double db;
typedef __int128 i128;
std::mt19937 rnd(std::chrono::steady_clock::now().time_since_epoch().count());
std::mt19937_64 rnd64(std::chrono::steady_clock::now().time_since_epoch().count());
const int dx[]={1,-1,0,0};
const int dy[]={0,0,-1,1};
int main()
{
#ifndef ONLINE_JUDGE
freopen("in.in","r",stdin);
freopen("out.out","w",stdout);
#endif
ios::sync_with_stdio(false);cin.tie(nullptr);cout.tie(nullptr);
int N,M,D;
cin>>N>>M>>D;
vector<vector<char>> buf(N+1,vector<char>(M+1));
vector<vector<int>> dis(N+1,vector<int>(M+1,1<<30));
vector<vector<bool>> vis(N+1,vector<bool>(M+1,0));
rep(i,1,N) rep(j,1,M) cin>>buf[i][j];
queue<pair<int,int>> q;
rep(i,1,N) rep(j,1,M) if(buf[i][j]=='H') q.push({i,j}),dis[i][j]=0;
while(!q.empty())
{
int x=q.front().first,y=q.front().second;
q.pop();
if(vis[x][y]) continue;
vis[x][y]=1;
rep(d,0,3)
{
int xx=x+dx[d],yy=y+dy[d];
if(xx<1||xx>N||yy<1||yy>M||buf[xx][yy]=='#') continue;
dis[xx][yy]=dis[x][y]+1;
if(dis[xx][yy]<=D) q.push({xx,yy});
}
}
int ans=0;
rep(i,1,N) rep(j,1,M) if(dis[i][j]<=D) ans++;
cout<<ans;
}
被样例创废了。