你有一个鸡蛋盒,可以表示为一个 $3 \times N$ 的网格。该网格由 3 行(编号为 1 到 3)和 $N$ 列(编号为 1 到 $N$)组成。位于第 $r$ 行第 $c$ 列的单元格记为 $(r, c)$。每个单元格要么是可用的,要么是不可用的;每个可用单元格最多只能容纳 1 个鸡蛋,而不可用单元格顾名思义无法使用。
你想要在鸡蛋盒的可用单元格中放入恰好 $K$ 个鸡蛋,使得任意两个最近鸡蛋之间的距离最大化。位于单元格 $(r_1, c_1)$ 的鸡蛋与位于单元格 $(r_2, c_2)$ 的鸡蛋之间的距离可以通过欧几里得距离计算,即 $\sqrt{(r_1 - r_2)^2 + (c_1 - c_2)^2}$。
请确定任意两个最近鸡蛋之间的最大可能距离,或者确定是否无法在你的鸡蛋盒中放入 $K$ 个鸡蛋。
输入格式
输入包含两个整数 $N$ 和 $K$ ($1 \le N \le 100; 2 \le K \le 3N$),分别表示鸡蛋盒的列数和鸡蛋的数量。接下来的 3 行,每行包含一个长度为 $N$ 的字符串 $S_r$,由字符 '.' 或 '#' 组成。字符串 $S_r$ 的第 $c$ 个字符表示鸡蛋盒中单元格 $(r, c)$ 的状态。
如果 $S_{r,c} = '.'$,则单元格 $(r, c)$ 是可用的;如果 $S_{r,c} = '\#'$,则单元格 $(r, c)$ 是不可用的。
输出格式
如果可以在你的鸡蛋盒中放入 $K$ 个鸡蛋,则输出一行实数,表示任意两个最近鸡蛋之间的最大可能距离。如果你的答案的绝对误差或相对误差不超过 $10^{-6}$,则被视为正确。
如果无法在你的鸡蛋盒中放入 $K$ 个鸡蛋,则输出 -1。
样例
样例输入 1
5 2 #.... ..... ...#
样例输出 1
4.472136
说明 1
任意两个最近鸡蛋之间的最大距离只能通过将鸡蛋放入单元格 $(3, 1)$ 和 $(1, 5)$ 来实现,此时两个(最近)鸡蛋之间的距离为 $\sqrt{20}$。
样例输入 2
5 6 ##.## ##### .....
样例输出 2
1.000000
说明 2
将 6 个鸡蛋放入盒中的方法只有一种;两个最近鸡蛋之间的距离为 1。
样例输入 3
3 4 ..# ... ...
样例输出 3
1.414214
说明 3
任意两个最近鸡蛋之间的最大距离可以通过将鸡蛋放入单元格 $(1, 1)$、$(3, 1)$、$(3, 3)$ 和 $(2, 2)$ 来实现。在这种排列中,两个最近鸡蛋的距离为 $\sqrt{2}$,例如单元格 $(1, 1)$ 和 $(2, 2)$ 中的鸡蛋。
另一种得到相同答案的放置方式是将鸡蛋放入单元格 $(1, 2)$、$(2, 1)$、$(2, 3)$ 和 $(3, 2)$。
样例输入 4
2 6 .. .# ..
样例输出 4
-1
说明 4
只有 5 个可用单元格,因此无法在鸡蛋盒中放入 6 个鸡蛋。