import sys
def cipher(key, cleartext):
assert cleartext.isalpha() # check that cleartext is only letters
assert len(key) == 8 ; # check that key is 8 bytes long
ciphertext = "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