刚学C#的小白求各路大神的帮助!!!!!!

巴德买了一个新的桌游,并沉迷于此,日渐消瘦。他玩了几把就天真地以为可以通过最小次数的移动来解决一切摆放不同的残局,不过他并不确定。所以他希望你能写一个程序以助他再次验证他的想法。
在6*6的棋盘上,你可以放置2*1或3*1的竖直棋子和1*2或1*3的水平棋子。并且竖直棋子只能竖直移动,水平棋子则只能横向。当没有其他棋子或墙挡在某颗棋子的移动路径上时,他便可依路径自由移动。
但有一颗特立独行的棋子,他身形1*2,面容姣好,和同类一样只能水平滑动,之所以说他特殊是因为这游戏的目的就是让他通过棋盘右边的洞,而且此洞只有他能通过。
不论一颗棋子一次移动几格,都只算一次移动。

输入:
此程序应当有若干次测试。每次测试的头一行是一个大写字母,表示你所指定的那枚应移出棋盘的特殊棋子。接下来六行,则用来表示在6*6棋盘上棋子的摆放格局。用“.”来表示无棋的空位。在棋盘上只能有1*2、1*3、2*1、3*1的棋子且一个大写字母只能用来表示一颗棋子。如不想继续测试,则键入“*”

输出
用数字表示测试的最小移动次数,或用“-1”表示无法完成目的。每个输出显示独占一行,不空行。

http://tieba.baidu.com/p/3629446512

你可以看看楼上的链接