AT_abc472_g [ABC472G] Cascading Grid
Description
$ H $ 行 $ W $ 列のグリッドがあります。各マスには `+`, `-`, `#` のいずれか一文字が書かれています。上から $ i $ 行目、左から $ j $ 列目のマスを $ (i,j) $ と表します。グリッドの情報は $ H $ 個の長さ $ W $ の文字列 $ S_1, S_2 , \dots ,S_H $ によって与えられ、 $ S_i $ の $ j $ 文字目が $ (i,j) $ に書かれています。
あなたは、次の操作を $ 0 $ 回以上行うことができます。
- `#` でないマスを $ 1 $ つ選ぶ。「選んだマスから `#` のマスを通ることなく、隣接するマスへ左・右・下のいずれかの方向に移動することだけで到達できるマス」をすべて `#` に変える。ただし、選んだマス自身も到達できるマスに含まれる。
操作後のグリッドにおける、`+` のマスの個数から `-` のマスの個数を引いた値としてあり得る最大値を求めてください。
Input Format
入力は以下の形式で標準入力から与えられる。
> $ H $ $ W $ $ S_1 $ $ S_2 $ $ \vdots $ $ S_H $
Output Format
答えを出力せよ。
Explanation/Hint
### Sample Explanation 1
$ (2,1) $ を選ぶと、 $ 2 $ 行目の全てのマスが `#` に変わります(上方向には移動できないことに注意してください)。残る $ 1 $ 行目には `+` が $ 2 $ 個、`-` が $ 1 $ 個あるため、値は $ 2-1=1 $ で、これが最大です。
### Sample Explanation 2
$ (1,1) $ を選ぶと、 $ (3, 2) $ を除いて `#` になります。マス $ (1, 1) $ 自身も到達できるマスに含まれることや、 `#` のマスは通れないことに注意してください。
### Constraints
- $ 1 \le H,W \le 30 $
- $ S_i $ は `+`, `-`, `#` からなる長さ $ W $ の文字列
- $ H, W $ は整数