Proqram Təminatı Sənayesinin İnqilabı
Proqram təminatı sahəsində inqilab etmək asan deyil. Buna görə də bu problem başqa bir mövzu ilə bağlıdır. Stanescu proqram təminatı yaratmaq üçün yeni, çox maraqlı bir üsul icad edib. Bu üsul proqram kodu yazmağa bənzəyir, lakin burada sizdən bunu başqasının etməsini istəyirsiniz. Beləliklə, bir şəxs Turing Maşınının nə olduğunu bilmədən böyük proqramlar yarada bilər. Gördüyünüz kimi, bu, sadəcə proqram təminatı sahəsində bir inqilab deyil. Əslində, Stanescu proqram təminatı sahəsinə əhəmiyyət vermir. Onun məqsədi sadəcə pul qazanmaqdır.
Qazandığı pulu qorumaq üçün bank hesabı üçün xüsusi bir parol seçməlidir ki, bu parol aşağıdakı tələblərə cavab versin:
Parol çox mürəkkəb olmamalıdır ki, Stanescu onu yadda saxlaya bilsin. Parolun mürəkkəbliyi onun simvollarının mürəkkəbliyinin cəmidir və bir simvolun mürəkkəbliyi onun əlifbadakı mövqeyinə bərabərdir (məsələn, 'a' üçün 1, 'b' üçün 2 və s.). Məsələn, "ala" sözünün mürəkkəbliyi 1 + 12 + 1 = 14-dür;
Parol verilmiş bir nümunə sətirinə uyğun olmalıdır (bu sətir kiçik latın hərflərindən, ’?’ və ’*’ simvollarından ibarətdir və uzunluğu 1000 simvoldan çox ola bilməz). ’?’ hər hansı bir kiçik latın hərfi ilə uyğun gəlir və ’*’ sıfır və ya daha çox kiçik latın hərfi ilə uyğun gəlir;
Parol verilmiş super-parol sətirinin alt-sətiri olmalıdır (bu sətir kiçik latın hərflərindən ibarətdir və uzunluğu 10000 simvoldan çox ola bilməz).
Ən sadə mümkün parolun mürəkkəbliyini hesablayan bir proqram yazmalısınız.
Girişdə bir neçə test halı verilir. Hər biri nümunə və super-parol sətirlərini ağ boşluqla ayıran bir sətirdən ibarətdir.
Hər bir test halı üçün proqramınız bir tam ədəd ilə bir sətir çap etməlidir - ən sadə mümkün parolun mürəkkəbliyi. Əgər heç bir parol verilmiş tələblərə cavab vermirsə, proqram -1 çap etməlidir.