IyDQuNGB0YXQvtC00L3Ri9C5INC30LDRiNC40YTRgNC+0LLQsNC90L3Ri9C5INGC0LXQutGB0YIKY2lwaGVydGV4dCA9ICZxdW90OyZxdW90OyZxdW90O9Cn0L4g0Lsg0LDRgtGK0YTQviwg0YfQuCDRjdGG0L7RjtGMICAK0LvRi9GL0LnQstGRINGH0ZYg0YHRltC90YfRgtC+INGE0LjRiNGG0LXQuSwgIArQr9GI0Ysg0LjRjNC+0LAgJm1kYXNoOyDRhdC40LzQudGM0LXRgyDQutGW0LwsICAK0LHRjNC4INC7INGE0YrQuNGH0LnRjyDRjNC40Y/RgtGMICAK0YzQvtGM0L3RgtGL0YguICAK0J7QvNC4INC40YjRjNGH0YLRi9GL0LnQuCDRjNC40YjRgtGHLCAgCtGH0L4g0LLQudGP0YPQudGM0YfQudC4INC90LjRjNGI0YTQuSwgIArQp9C4INGE0YzRiC3RjNC4INGM0LjRjNGM0LHRgtGM0LnRhTog0YLRjyAgCtC40YjQstGRLCDRhNC50YQg0LjRg9C50YXRkdCw0L7QuyDRjSAgCtGM0YzRjNGF0L7RhNC5LiAgCtCo0Ycg0LvQtdC30LHRgtGFOiAmbGFxdW870YzQudC50LvRliZyYXF1bzsg0YIgIAombGFxdW870LjRjNGC0LDQuSZyYXF1bzssINGCICZsYXF1bzvQutGW0LrRiNCx0YTQuSZyYXF1bzsgJm1kYXNoOyDRh9C+ICAK0L3RitGN0LwsICAK0JkgJmxhcXVvO9Cx0L7RhdC40LvQvtGEJnJhcXVvOyAmbWRhc2g7INGF0YLQstGRINGB0ZbQudGG0LnRjywgIArQsdGM0Lgg0YrQudGM0YzRiNC10YbQudGHINGM0LnRhiwg0LzQvdC+INGF0Y3QvC4gIArQm9GK0LnQvNC40Lsg0YfQviDQu9GC0L3Rh9C4ICZtZGFzaDsgIArRjNC40YXRkdGE0Lgg0YHQu9GN0YQ6INGM0LjRhtC+0YzQu9GWICAK0YDQvtGF0L7RgdGH0LXRgyDQs9C+0YXRhCwgIArQqNC40YzRiNGGINC40YjRhdCx0LnRh9GR0L4g0YbQudGM0L7RjNGCLCAgCtC40YjRjNGI0YYg0LjRjNGI0YjRiNGE0YzRgtGDINCy0L7RhdGELiAgCtCbINGF0L7RjNC3INC40YjRgNC50Yog0LjRjCDRjNC40YjRgtCx0YTRgiwgIArRh9C4INGB0LjQu9GN0Ywg0L7QvNC4ICZtZGFzaDsg0YfQviDQuNGF0LnRhi4gIArQntC80Lgg0LvRi9GM0LPQudC4INCy0YTRjdGK0LkgJm1kYXNoOyDQttGM0YggIArRgtGH0L7RgyDRh9C5INC70L7RjNC70LjRjywgIArQmSDRitGM0L7RjNGR0LggJm1kYXNoOyDRjNC50YYsINC80L3QviDQutGR0L3RjNGIICAK0YTQuNGGINC40YjQvSDRitC/0LrRitC50YbRgiDQsdC50YzQudGG0YIuICAK0KjRhyAmbWRhc2g7INCx0ZHQvy3RjNC4INC90L7RjNGM0YjRiCwgIArRjNGE0YXQvtC+0YfRh9C40L4g0Lsg0LHQvtGM0LXRitC90Y8gIArQsdC50YzRjNC90Y8uICAK0KfRgiDRitC50YHRjSDRh9C+INGM0YTQudGB0LnRhSAqKiosINGH0LggIArQu9GM0L4g0L7QvNC4INGN0YHRh9C50YXRgiwgIArQpNC40YjQvdC5INGM0YzRiNGI0YUg0YfQudC9INGM0LjRgyAgCtGM0LnQu9C40YMsINC80L3QviDRhtC50LLRkSDRhdC+0LzRhdC5INC7ICAK0Y7RgtGH0LnRhdC+LiZxdW90OyZxdW90OyZxdW90OwoKYWxwaGFiZXQgPSAn0LDQsdCy0LPQtNC10ZHQttC30LjQudC60LvQvNC90L7Qv9GA0YHRgtGD0YTRhdGG0YfRiNGJ0YrRi9GM0Y3RjtGPJwoKZGVmIGRlY3J5cHRfY2Flc2FyKHRleHQsIHNoaWZ0KToKICAgIHJlc3VsdCA9IFtdCiAgICBmb3IgY2ggaW4gdGV4dDoKICAgICAgICBpZiBjaC5sb3dlcigpIGluIGFscGhhYmV0OgogICAgICAgICAgICBpZHggPSBhbHBoYWJldC5pbmRleChjaC5sb3dlcigpKQogICAgICAgICAgICBuZXdfaWR4ID0gKGlkeCAtIHNoaWZ0KSAlIDMzCiAgICAgICAgICAgIG5ld19jaGFyID0gYWxwaGFiZXRbbmV3X2lkeF0KICAgICAgICAgICAgaWYgY2guaXN1cHBlcigpOgogICAgICAgICAgICAgICAgbmV3X2NoYXIgPSBuZXdfY2hhci51cHBlcigpCiAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQobmV3X2NoYXIpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChjaCkKICAgIHJldHVybiAnJy5qb2luKHJlc3VsdCkKCiMg0L/QtdGA0LXQsdC40YDQsNC10Lwg0LLRgdC1INGB0LTQstC40LPQuCDQvtGCIDEg0LTQviAzMgpmb3Igc2hpZnQgaW4gcmFuZ2UoMSwgMzMpOgogICAgcHJpbnQoZiZxdW90O1xuPT09INCh0LTQstC40LMge3NoaWZ0fSA9PT1cbiZxdW90OykKICAgIHByaW50KGRlY3J5cHRfY2Flc2FyKGNpcGhlcnRleHQsIHNoaWZ0KSkKICAgIHByaW50KCZxdW90O1xuJnF1b3Q7ICsgJnF1b3Q7LSZxdW90Oyo1MCk=
# исходный зашифрованный текст
ciphertext = """Чо л атъфо, чи эцоюь
лыыйвё чі сінчто фишцей,
Яшы иьоа — химйьеу кім,
бьи л фъичйя ьиять
ьоьнтыш.
Оми ишьчтыыйи ьиштч,
чо вйяуйьчйи ниьшфй,
Чи фьш-ьи ьиььбтьйх: тя
ишвё, фйф иуйхёаол э
ьььхофй.
Шч лезбтх: «ьййлі» т
«иьтай», т «кікшбфй» — чо
нъэм,
Й «бохилоф» — хтвё сійцйя,
бьи ъйььшецйч ьйц, мно хэм.
Лъймил чо лтнчи —
ьихёфи слэф: ьицоьлі
рохосчеу гохф,
Шиьшц ишхбйчёо цйьоьт,
ишьшц иьшшшфьту вохф.
Л хоьз ишрйъ иь ьиштбфт,
чи силэь оми — чо ихйц.
Оми лыьгйи вфэъй — жьш
тчоу чй лоьлия,
Й ъьоьёи — ьйц, мно кёньш
фиц ишн ъпкъйцт бйьйцт.
Шч — бёп-ьи ноььшш,
ьфхооччио л боьеъня
бйььня.
Чт ъйсэ чо ьфйсйх ***, чи
льо оми эсчйхт,
Фишнй ььшшх чйн ьиу
ьйлиу, мно цйвё хомхй л
ютчйхо."""
alphabet = 'абвгдеёжзийклмнопрстуфхцчшщъыьэюя'
def decrypt_caesar(text, shift):
result = []
for ch in text:
if ch.lower() in alphabet:
idx = alphabet.index(ch.lower())
new_idx = (idx - shift) % 33
new_char = alphabet[new_idx]
if ch.isupper():
new_char = new_char.upper()
result.append(new_char)
else:
result.append(ch)
return ''.join(result)
# перебираем все сдвиги от 1 до 32
for shift in range(1, 33):
print(f"\n=== Сдвиг {shift} ===\n")
print(decrypt_caesar(ciphertext, shift))
print("\n" + "-"*50)