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 $ は整数