每个人都有害怕的东西。有人怕黑,有人恐高,有人害怕 Vinnie Jones(我们所有人都怕 Vinnie Jones),有人害怕在吃东西前唱歌……
恐惧有很多种,但对 Mirko 来说,最大的恐惧莫过于选择一块土地来种植草莓。Mirko 的土地可以描述为一个 $N$ 行 $M$ 列的矩阵。矩阵中的一些格子适合种植草莓,而另一些则不适合——那里长满了杂草。Mirko 正在寻找完全由适合种植草莓的格子组成的矩形区域。这类矩形被称为合格矩形。此外,Mirko 对矩阵中所有格子的潜在价值很感兴趣。矩阵中每个格子的潜在价值定义为包含该格子的合格矩形数量。
由于 Mirko 难以直面自己的恐惧,他请求你帮他计算所有格子潜在价值的总和。
输入格式
第一行包含两个正整数 $N$ 和 $M$($1 \le N, M \le 2\,000$),表示土地的尺寸。
接下来的 $N$ 行,每行包含 $M$ 个字符,表示土地的景观。每个字符可以是 .(英文句号),表示适合种植的格子;或者是 #,表示长满杂草的格子。
输出格式
输出矩阵中所有格子潜在价值的总和。
子任务
- 在价值 $20\%$ 的测试数据中,满足 $1 \le N, M \le 10$。
- 在另外价值 $30\%$ 的测试数据中,满足 $1 \le N, M \le 300$。
样例
输入格式 1
2 3 .#. ..#
输出格式 1
8
输入格式 2
3 3 ... ... ...
输出格式 2
100
输入格式 3
3 4 ..#. #... ...#
输出格式 3
40
说明
以下矩阵描述了土地中每个格子的潜在价值。所有潜在价值的总和为 $8$。
| 2 | 0 | 1 |
| 3 | 2 | 0 |