#!/usr/bin/env python3 p="DABCEFGHLIJKMNOPQRST|EBCAHFGDQJKLTNOPMRSI|BFCDAEGHIRKLMQOPJNST|ABCDFGHEIJKLNOPMQRST|ACGDEBFHIJSLMNRPQKOT|ABDHEFCGIJKTMNOSQRLP".split("|") o=[[0]*20,[2,0,0,1,1,0,0,2]+[0]*12,[1,2,0,0,2,1,0,0,0,1,0,0,0,1,0,0,1,1,0,0],[0]*20,[0,1,2,0,0,2,1]+[0]*13,[0,0,1,2,0,0,2,1,0,0,0,1,0,0,0,1,0,0,1,1]] s=[21,5,6,12,19,1,11,15,0,2,4,6,23,17,20,8,13,18,15,10] for x in "U' B' D B L' D' L U".split(): a="URFDLB".index(x[0]);n=2 if "2" in x else 3 if "'" in x else 1 q=[ord(c)-65 for c in p[a]] for j in range(n):s=[3*(s[q[i]]//3)+(s[q[i]]%3+o[a][i])%3 for i in range(8)]+[2*(s[q[i]]//2)+(s[q[i]]%2+o[a][i])%2 for i in range(8,20)] print(s) print('cross',s[8:12],'target corners',s[2:4],'target edges',s[18:20])