#include <stdio.h>


void init(char *s, int l, char v) {
	int i;
        for(i=0; i<l; i++)
                s[i]=v;
}

void cifra(char *s, int k, int l) {
	int i;
	for(i=0; i<l; i++) {
		s[i]=(s[i]-'a'+k)%('z'-'a'+1)+'a';
	}
}

void decifra(char *s, int k, int l) {
	int i;
	for(i=0; i<l; i++) 
		s[i]=(s[i]-'a'-k+26)%('z'-'a'+1)+'a';
}

void cifra_k(char *s, char *k, int l){
    int i;
    for(i=0; i<l; i++)
        cifra(&s[i], k[i]-'a', 1);
}

void decifra_k(char *s, char *k, int l){
    int i;
    for(i=0; i<l; i++)
        decifra(&s[i], k[i]-'a', 1);
}

int main(){
    char k[32];
    int l;
    char testo[128];

	init(testo,128,'*');

    printf("Testo input: ");
	scanf("%s", testo);
    l=strlen(testo);

    printf("Chiave: ");
    scanf("%s", k);

	cifra_k(testo,k,l);	

	printf("Testo cifrato: %s\n", testo);

	decifra_k(testo,k,l);

	printf("Testo decifrato: %s\n", testo);
	return 0;
}

