#ZF1165. 换杯子高手

换杯子高手

Description

小任是个神人,因为他在猜测杯子颜色方面可以做到出类拔萃。

现在小朱把 66 个不同颜色的杯子排成一排(第一个杯子的位置为 00),每个杯子的颜色是红色,橙色,黄色,绿色,蓝色,紫色中的一种(致敬传奇北大队伍赤橙黄绿蓝紫)。但是杯子被一块布盖住了,我们并不知道每个杯子是什么颜色。给出一个长度为 66 的字符串由小写英文字母组成,表示小任猜测每个杯子的颜色。其中rr 表示红色,oo 表示橙色,yy 表示黄色,gg 表示绿色,bb 表示蓝色,pp 表示紫色。

但是你对小任猜测的结果始终持怀疑态度,为了解决这个问题,小朱会执行 qq 次以下操作: 选取两个位置 x, yx,\ y,并交换 xxyy 位置上的杯子,如果 x=yx=y,表示什么都没有操作。最后小朱会告诉你现在有 zz 个杯子和小任猜的一样。每次交换完,并不会把杯子换回去,也就是说每次操作后杯子的状态都会继承到下一次操作。

为了击碎小任的谎言,请你输出所有可能满足条件的颜色分配数量,并按字典序从小到大输出最初所有可能的杯子的颜色排列。

颜色排列由一个长度为 66 的字符串表示,rr 表示红色,oo 表示橙色,yy 表示黄色,gg 表示绿色,bb 表示蓝色,pp 表示紫色。

长度相同时,字符串 ss 的第一个不同的字符比字符串 tt 第一个不同的字符大,则 ss 的字典序比 tt 大。

例如:"abs""abs""aba""aba" 第一个不同的字符分别是 s's'a'a',因为 s's' > a'a',所以 "abs""abs" 的字典序更大。

Format

Input

第一行有一个长度为 66 的字符串,表示小任猜测的每个杯子的颜色。

第二行有一个整数 qq,表示小朱给出的操作数,其中 1q50001\leq q \leq 5000

接下来 qq 行,每行有三个整数 x,y,zx,y,z,表示交换 xx 位置和 yy 位置上的杯子后,一共有 zz 个杯子的颜色和小任的猜测的相同,其中 0x,y50\leq x,y\leq 50z60\leq z\leq 6

Output

第一行输出一个整数 nn,表示可能的颜色排列数量。

接下来 nn 行按字典序输出表示颜色排列的字符串。

Samples

roygbp
3
1 3 1
2 3 2
5 0 4
4
pbgoyr
pogybr
pybogr
pyogbr

Limitation

1s, 1024KiB for each test case.