def f(x):
t=x;c=[]
for i in range(7):*t,=[map(''.join,zip(*t)),t[::-1]][i%2];c+=t,
return x in c
for i in [['ACDC','BBCA','BADD','ABCD'],
['BACD','BACD','BACD','BACD'],
['BCCB','DAAD','CAAC','BDDB'],
['ABDC','BACD','DCAB','CDBA'],
['BDAB','ACCD','DCCA','BADB'],
['DBCA','BDCA','ACDB','ACBD']]:
print('%s -> %s'%(i,f(i)))
ZGVmIGYoeCk6CiB0PXg7Yz1bXQogZm9yIGkgaW4gcmFuZ2UoNyk6KnQsPVttYXAoJycuam9pbix6aXAoKnQpKSx0Wzo6LTFdXVtpJTJdO2MrPXQsCiByZXR1cm4geCBpbiBjCiAKZm9yIGkgaW4gW1snQUNEQycsJ0JCQ0EnLCdCQUREJywnQUJDRCddLAogICAgICAgICAgWydCQUNEJywnQkFDRCcsJ0JBQ0QnLCdCQUNEJ10sCiAgICAgICAgICBbJ0JDQ0InLCdEQUFEJywnQ0FBQycsJ0JEREInXSwKICAgICAgICAgIFsnQUJEQycsJ0JBQ0QnLCdEQ0FCJywnQ0RCQSddLAogICAgICAgICAgWydCREFCJywnQUNDRCcsJ0RDQ0EnLCdCQURCJ10sCiAgICAgICAgICBbJ0RCQ0EnLCdCRENBJywnQUNEQicsJ0FDQkQnXV06CiAgICAgICAgICAJcHJpbnQoJyVzIC0+ICVzJyUoaSxmKGkpKSk=
['ACDC', 'BBCA', 'BADD', 'ABCD'] -> False
['BACD', 'BACD', 'BACD', 'BACD'] -> True
['BCCB', 'DAAD', 'CAAC', 'BDDB'] -> True
['ABDC', 'BACD', 'DCAB', 'CDBA'] -> True
['BDAB', 'ACCD', 'DCCA', 'BADB'] -> True
['DBCA', 'BDCA', 'ACDB', 'ACBD'] -> True