SP5452 ANARC09D - Hop Do not Walk

题目描述

《青蛙克米特》是一款玩起来轻松愉快的视频游戏,它操作简单,但需要一定策略。你要控制一只可以双向行走或跳跃的青蛙。青蛙的目的是穿过一个由多块瓷砖组成的队列,每块瓷砖有黑白两种颜色。青蛙站立在瓷砖队列中的一个空格上,当它走过一块瓷砖时,该瓷砖会滑动到青蛙原来的位置。例如,在下图中,青蛙的左边有两块瓷砖,右边有三块瓷砖,我们用 BWFBBW 来表示这个状态,其中 F 表示青蛙所在的位置,B 和 W 分别表示黑色面和白色面。本游戏的前进方向为从左到右。如果青蛙朝前走,结果状态将变为 BWBFBW;如果朝后走,那么青蛙后面的瓷砖会滑入其原来站立的位置。 青蛙也可以跳跃,直接越过身边的一块瓷砖,落到相邻的再下一块瓷砖上。如青蛙朝后跳,它会落在第一块(最左边)的瓷砖上,并且该瓷砖会被移到青蛙原来所在的位置,同时反转其正反面。例如,从图示状态朝后跳,结果会变成:FWWBBW。 你的任务是编写一个程序,计算最少需要多少次移动(包括行走和跳跃)可以把给定的瓷砖排列转变成这样一种状态:所有的黑色瓷砖都是连续排列,中间没有白色瓷砖,而青蛙则可以出现在任何位置。

输入格式

输入由多组测试用例组成,每组测试用例都在单独的一行上,包含一个字符串 $S$。字符串 $S$ 表示初始的瓷砖排列,S 至少包含一个字符,不超过 100 个字符,包括 'B'、'W' 和唯一的 'F'。输入文件的最后一行是一个或多个 '-' 号字符。

输出格式

对每个测试用例,输出以下格式: ``` k. M ``` 其中 $k$ 表示测试用例编号,从 1 开始计数;$M$ 是将初始排列转变为没有白色瓷砖在黑色瓷砖之间的状态所需的最少移动次数。青蛙最终可以站在任意位置。如果无法在少于 10 次移动内完成转换,则输出 $M = -1$。 **本翻译由 AI 自动生成**