#include <stdio.h>
#include <cs50.h>
#include <string.h>
int main ( int argc , string argv[ ] )
{
string k = argv[ 1 ] ;
if ( argc != 2 )
{
printf ( "Error, Enter one word made of alphabetical characters" ) ; return 1 ;
}
else
{
for ( int i
= 0 , n
= strlen ( k
) ; i
< n
; i
++ ) {
if ( ! ( ( k[ i] >= 'a' && k[ i] <= 'z' ) || ( k[ i] >= 'A' && k[ i] <= 'Z' ) ) )
{
printf ( "Error, Enter one word made of alphabetical characters" ) ; return 1 ;
}
}
string p = get_string( ) ;
for ( int j
= 0 , i
= 0 , n
= strlen ( p
) ; j
< n
; j
++ ) {
{
i = 0 ;
}
int s = p[ j] + k[ i] - 'a' ;
int c = p[ j] + k[ i] - 'A' ;
if ( k[ i] >= 'A' && k[ i] <= 'Z' )
{
k[ i] = k[ i] + 32 ;
}
if ( ( p[ j] >= 'a' && p[ j] <= 'z' && s > 'z' ) || ( p[ j] >= 'A' && p[ j] <= 'Z' && c > 'Z' ) )
{
printf ( "%c" , p
[ j
] + k
[ i
] - 'a' - 26 ) ; }
else if ( ( p[ j] >= 'a' && p[ j] <= 'z' ) || ( p[ j] >= 'A' && p[ j] <= 'Z' ) )
{
printf ( "%c" , p
[ j
] + k
[ i
] - 'a' ) ; }
else
{
}
i++;
}
return 0 ;
}
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxjczUwLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4KaW50IG1haW4gKGludCBhcmdjICwgc3RyaW5nIGFyZ3ZbXSkKewogICAgc3RyaW5nIGsgPSBhcmd2WzFdOwogICAgaWYgKGFyZ2MgIT0gMikKICAgIHsKICAgICAgICBwcmludGYoIkVycm9yLCBFbnRlciBvbmUgd29yZCBtYWRlIG9mIGFscGhhYmV0aWNhbCBjaGFyYWN0ZXJzIik7CiAgICAgICAgcmV0dXJuIDE7CiAgICB9CiAgICBlbHNlIAogICAgewogICAgICAgIGZvciAoaW50IGkgPSAwLCBuID0gc3RybGVuKGspOyBpIDwgbjsgaSsrKQogICAgICAgIHsKICAgICAgICAgICAgaWYgKCEoKGtbaV0gPj0gJ2EnICYmIGtbaV0gPD0gJ3onKSB8fCAoa1tpXSA+PSAnQScgJiYga1tpXSA8PSAnWicpKSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgcHJpbnRmKCJFcnJvciwgRW50ZXIgb25lIHdvcmQgbWFkZSBvZiBhbHBoYWJldGljYWwgY2hhcmFjdGVycyIpOwogICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcHJpbnRmKCJwbGFpbnRleHQ6Iik7CiAgICAgICAgc3RyaW5nIHAgPSBnZXRfc3RyaW5nKCk7CiAgICAgICAgcHJpbnRmKCJjaXBoZXJ0ZXh0OiIpOwogICAgICAgIGZvciAoaW50IGogPSAwICwgaSA9IDAsIG4gPSBzdHJsZW4ocCk7IGogPCBuOyBqKyspCiAgICAgICAgewogICAgICAgICAgICAKICAgICAgICAgICAgaWYgKGk+PSBzdHJsZW4oaykpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGkgPSAwOwogICAgICAgICAgICB9IAogICAgICAgICAgICBpbnQgcyA9IHBbal0gKyBrW2ldIC0gJ2EnOwogICAgICAgICAgICBpbnQgYyA9IHBbal0gKyBrW2ldIC0gJ0EnOwogICAgICAgICAgICBpZiAoa1tpXSA+PSAnQScgJiYga1tpXSA8PSAnWicpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAga1tpXSA9IGtbaV0gKyAzMjsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoKHBbal0gPj0gJ2EnICYmIHBbal0gPD0gJ3onICYmIHMgPiAneicgKSB8fCAocFtqXSA+PSAnQScgJiYgcFtqXSA8PSAnWicgJiYgYyA+ICdaJykpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIHByaW50ZigiJWMiICwgcFtqXSArIGtbaV0gLSAnYScgLSAyNik7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSBpZiAoKHBbal0gPj0gJ2EnICYmIHBbal0gPD0gJ3onKSB8fCAocFtqXSA+PSAnQScgJiYgcFtqXSA8PSAnWicpKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBwcmludGYoIiVjIiAsIHBbal0gKyBrW2ldIC0gJ2EnKTsKICAgICAgICAgICAgfSAgICAKICAgICAgICAgICAgZWxzZQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBwcmludGYoIiVjIiAsIHBbal0pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGkrKzsKICAgICAgICB9ICAgICAKICAgICAgICBwcmludGYoIlxuIik7CiAgICAgICAgcmV0dXJuIDA7CiAgICB9Cn0=