Я не утверждаю, что это лучший, самый устойчивый или даже приемлемый способ сделать это, но писать это было весело.Я надеюсь, что это приблизит вас к решению того, что вы пытаетесь решить:
import re
# I’m assuming that the string is "((BG)*(GB)*)*"
# any other characters will make this fail
input = 'BGBGBGGBGBGB'
output = ''
for two in re.findall('..', input):
output += int.to_bytes(int.from_bytes(two.encode(), 'big') ^ 1285, 2, 'big').decode('ascii')
print(input)
print(output)