#2543. 荷叶池塘

荷叶池塘

题目描述

为了便于牛们欣赏和锻炼,农夫JOHN\red{JOHN}在他的农场上新添加了一个美丽的池塘。

JOHN\red{JOHN}的池塘是一个长方形,他已经把它划分成了M\red{M}N\red{N}列的小正方行 (1<=M<=30\red{(1 <= M <= 30}; 1<=N<=30).\red{1 <= N <= 30). }某些正方行里是石头,另外一 些则是特别结实的荷叶,其余则只有清水。

为了锻炼,Bessie\red{Bessie}想从一片荷叶跳到另外一片。她的每一次跳跃都是一个象棋中的马步:两行一列或一行两列。 JOHN\red{JOHN}看到了Bessie\red{Bessie}并且发现有时Bessie\red{Bessie}没有办法达到她的目标荷叶。

他准备添加一些荷叶来让Bessie\red{Bessie}完成她的目标。当然,荷叶不能放在石头上。 帮助JOHN\red{JOHN}找出他最少要放多少片荷叶和他一共有多少种放最少片荷叶的方案。

输入格式

1\red{1}行: 两个整数, M\red{M }N\red{N}

2\red{2 \sim}M+1\red{M+1}行: 第i+1\red{i+1}包含N\red{N}个数,分别为第i\red{i}行的N\red{N}个格子的情况。 0\red{0}表示格子为空,1\red{1}表示有一片荷叶,2\red{2}表示格子里有石头,3\red{3}表示此格子是Bessie\red{Bessie}的起点,4\red{4 }表示此格子是Bessie\red{Bessie}的目标。

输出格式

1\red{1}行: 一个数,最少情况下需要添加的荷叶数目。

如果没有方案存在,输出1\red{- 1}

2\red{2}行: 一个数,达到最小值的方案总数。

这个数保证不超过内设64\red{64}位整数(longlong/int64)\red{(long long/ int64)}的大小。如果第一行是1\red{-1,}不要输出此行。

样例

输入样例

4 5
1 0 0 0 0
3 0 0 0 0
0 0 2 0 0
0 0 0 4 0

输出样例

2 
3

提示

输入解释:

池塘含4\red{4}5\red{5}列。Bessie\red{Bessie}在第2\red{2}行第1\red{1}列并且想跳到第4\red{4}行第4\red{4}列。池塘里有1\red{1}块 石头和3\red{3}片荷叶

输出解释:

至少需要2\red{2}片荷叶。一共有三种摆法: 第4\red{4}行第2\red{2}列,第2\red{2}行第3\red{3}列 第1\red{1}行第3\red{3}列,第3\red{3}行第2\red{2}列 第1\red{1}行第3\red{3}列,第2\red{2}行第5\red{5}

R1C2,R2C3     R1C3,R3C2     R1C3,R2C5
          1 0 0 0 0     1 0 X 0 0     1 0 X 0 0
          3 0 X 0 0     3 0 0 0 0     3 0 0 0 X
          0 0 2 0 0     0 X 2 0 0     0 0 2 0 0
          0 X 0 4 0     0 0 0 4 0     0 0 0 4 0