1853: 回家

内存限制:256 MB 时间限制:1.000 S
评测方式:文本比较 命题人:
提交:20 解决:17

题目描述

在一个网格地图上有N个小人和N栋房子。每个小人用一个单位时间可以上下或左右走一格。每个小人每移动一格,你都要付出1单位的金钱。每栋房子只能容纳1个小人。

现在要把N个小人都移动到N栋房子里去,请问,你最少需要付出多少钱?

在地图上,’.’表示空地,’H’表示房子,‘m’表示小人。

 

你可以认为地图上的每个格子都很大,大到可以同时容纳N个小人,而且允许某个小人走到某个有房子的格子里,而不进入房子。

输入

1行:2个整数NMN是地图的行数,M是列数。2<=N,M<=30

接下来N行,每行M个字符,描述地图的一行。保证数据中房子和小人相等同,最多有100栋房子。

输出

1行:一个整数,表示要付出的最小金钱。

样例输入 复制

2 2
.m
H.
5 5
HH..m
.....
.....
.....
mm..H
7 8
...H....
...H....
...H....
mmmHmmmm
...H....
...H....
...H....
0 0

样例输出 复制

2
10
28