有三个水平放置的字母轮叠在一起,它们具有相同数量的列。每个轮子的每一列边缘上都有一个字母,即 ‘A’、‘B’ 或 ‘C’。你可以旋转这些轮子来调整字母的位置。单次旋转操作可以将任意一个轮子向左或向右移动一列。当然,这些轮子是圆形的,因此第一列和最后一列是相邻的。
你需要判断是否可以通过旋转轮子,使得每一列在三个轮子上对应的字母各不相同。如果可以,请确定所需的最少旋转次数。
输入格式
输入包含三行。每行是一个字符串 $s$ ($2 \le |s| \le 5 \cdot 10^3$),仅由大写字母 ‘A’、‘B’ 或 ‘C’ 组成,描述了其中一个轮子初始位置的字母。所有三个字符串的长度相同。
输出格式
输出一个整数,表示所需的最少旋转次数;如果无法实现,则输出 $-1$。
样例
样例输入 1
ABC ABC ABC
样例输出 1
2
样例输入 2
ABBBAAAA BBBCCCBB CCCCAAAC
样例输出 2
3
样例输入 3
AABB BBCC ACAC
样例输出 3
-1