AT_abc472_d [ABC472D] Bomber Mad
Description
$ H $ 行 $ W $ 列のグリッドがあります。各マスは、空マスまたは爆弾マスのどちらかです。上から $ i $ 行目、左から $ j $ 列目のマスを $ (i,j) $ と表します。グリッドの情報は $ H $ 個の長さ $ W $ の文字列 $ S_1, S_2 , \dots ,S_H $ によって与えられ、 $ S_i $ の $ j $ 文字目が `.` のとき $ (i,j) $ は空マス、 $ S_i $ の $ j $ 文字目が `#` のとき $ (i,j) $ は爆弾マスです。
また、空マス $ (i,j) $ について $ i $ 行目にも $ j $ 列目にも爆弾マスが存在しないとき、そのマスを **安全な空マス** と呼びます。
$ 1 $ 回の移動で今いるマスから、上下左右に隣り合う空マスに移動することができます(爆弾マスには移動できません)。以下の条件を満たす空マス $ (i, j) $ の数を求めてください。
- $ (i,j) $ から $ K $ 回以下の移動で **安全な空マス** へ到達できる。
Input Format
入力は以下の形式で標準入力から与えられる。
> $ H $ $ W $ $ K $ $ S_1 $ $ S_2 $ $ \vdots $ $ S_H $
Output Format
条件を満たす空マスの個数を出力せよ。
Explanation/Hint
### Sample Explanation 1
**安全な空マス** は $ (2,2) $ だけです。 $ (2,2) $ へ $ 1 $ 回以下の移動で到達できる空マスは $ (1,2),(2,1),(2,2),(2,3),(3,2) $ の $ 5 $ マスですから、答えは $ 5 $ です。
### Sample Explanation 2
爆弾マスが存在しないため、 $ 6 $ マスすべてが **安全な空マス** です。したがって、どの空マスも移動回数 $ 0 $ 回で条件を満たします。
### Constraints
- $ 1 \le H,W \le 5\times 10^5 $
- $ H\times W \le 5\times 10^5 $
- $ 0 \le K \le H\times W-1 $
- $ S_i $ は `.` と `#` からなる長さ $ W $ の文字列
- $ H,W,K $ は整数