顽皮恶魔
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

浮云阴,骤雨倾,顽皮恶魔镰刀显。

你的庄园是一块 的草坪。

现在有一些格子是普通植物 ,有一些格子是萝卜保护伞 ,有一些格子是僵尸 。(已经在格子上的僵尸不会吃掉植物或移动)

tip:萝卜保护伞可以保护周围 的植物,即一个位于位置 (x,y) 的萝卜保护伞可以保护位于  以及自身九个格子上的植物。

现在你想知道,对于这样一块给定的草坪,假设有无穷多个飞贼,能够偷走最多数量的植物是多少。

输入描述:

全文第一行输入一个正整数 ,表示数据组数。

每组数据第一行输入两个正整数 ,表示草坪的长和宽。

接下来输入一个 的字符矩阵表示草坪的大小,字符矩阵中仅包含  三种字符。

数据保证

输出描述:

每行输出一个整数表示最多被偷走的植物数量。
示例1

输入

复制
1
5 5
ZPZPZ
P*PZP
ZPZPZ
PZPZP
ZP*PZ

输出

复制
5

说明

分别位于 (2,2)(5,3) 上的保护伞可以保护周围的植物,最后能被偷走的植物如下图所示:(\# 表示即将被偷走,\tt * 表示保护伞,\tt P 表示被保护)



肉眼可见最后有分别位于 (1,4),(2,5),(3,4),(4,1),(4,5) 的五株被偷走。