Gizli kod
Vaxt gəldi ki, haker bacarıqlarınızı yoxlayasınız! Sizdən düşmənin kodlarını cari müharibədə ... və ya başqa birisi ilə sındırmaq üçün kömək istənilib. Hər halda, siz düşmənin istifadə etdiyi şifrələmə texnikasını açmalısınız. Bu kifayət qədər sadədir və aşağıdakı kimi baş verir. Qeyd edək ki, bütün sətirlər yalnız böyük latın hərflərindən ibarətdir.
K açarı və P açıq mətni var. O, simvol-simvol kodlanır və nəticədə eyni uzunluqda C şifrəsi alınır.
|K| açarın uzunluğunu göstərir. O zaman ilk |K| simvollar P açıq mətninin ilk |K| simvollarının K açarının simvollarına əlavə edilməsi ilə alınır. İki simvolun əlavə edilməsi onların rəqəm kimi interpretasiyası (A = 0, B = 1 və s.) və 26 modulu üzrə cəminin alınması nəzərdə tutulur. Yəni C_i = (P_i + K_i ) mod 26 üçün i = 1, ... ,|K|. Əgər |K| > |P|, artıq K simvolları nəzərə alınmır.
Qalan P simvolları, yəni P_i üçün i > |K|, əvvəlki şifrələmə simvolları istifadə edilərək C_i = (P_i + C_{i−|K|}) mod 26 formulu ilə kodlanır i = |K| + 1, ..., |P| üçün.
Məsələn, "STANFORD" sətirinin "ACM" açarı ilə şifrələnməsini nəzərdən keçirək:
STA NFORD + ACM SVMFA ———- SVM FAAWD
Alqoritmi bildiyiniz üçün düşmənin mesajını oxumalısınız. Xoşbəxtlikdən, komandanız tərəfindən əldə edilmiş bir neçə açıq mətn və onlara uyğun şifrələmə mətnləri var. Bütün bunların eyni açarla şifrələndiyi məlumdur. Düşmənin istifadə etdiyi açarı tapmağa kömək edin.
Giriş verilənləri
Bir neçə testdən ibarətdir. Hər bir test sizə məlum olan mətn - şifrələmə mətn cütlərinin sayını n (1 ≤ n ≤ 100) ehtiva edən bir sətirlə başlayır. Növbəti n sətirin hər biri iki sətir P və C - mətn və şifrələmə mətnini ehtiva edir. P və C yalnız böyük hərflərdən (A-Z) ibarətdir və eyni uzunluqdadır (ən çox 100 simvol). Sonuncu sətir n = 0 ehtiva edir və işlənmir.
Çıxış verilənləri
Hər bir test üçün ayrı sətirdə mümkün olan ən qısa açarı və ya belə bir açar mövcud deyilsə "Impossible" çıxarın.