#include<stdio.h>
#include<ctype.h>
#include<stdlib.h>
#include<string.h>

#define MAX 21

typedef struct uzel {
	char slovo[MAX];
	char preklad[MAX];
	struct uzel *dalsi;
} UZEL;

typedef UZEL *PUZEL;

PUZEL nacti_slovnik();
PUZEL najdi_slovo( PUZEL koren, char *slovo);


int main()
{
	PUZEL koren;
	if ( (koren = nacti_slovnik()) == NULL)
		return 1;
	
	char c = getchar();
	char buffer[MAX+1];
	int pocet;
	PUZEL kde;

	while ( c != EOF ) {
		pocet = 0;

		while ( isalpha(c) && pocet < MAX) {
			buffer[pocet] = c;
			pocet++;

			c = getchar();
		}

		if ( pocet < MAX ) {
			buffer[pocet] = '\0';

			if ( (kde = najdi_slovo( koren, buffer)) != NULL)
				printf( "%s", kde->preklad);
			else
				printf( "%s", buffer);
		}
		else {
			buffer[MAX] = '\0';
			printf( "%s", buffer);
			while ( isalpha( c)) {
				printf("%c", c);
				c = getchar();
			}
		}


		while ( !(isalpha( c) || c == EOF)) {
			printf("%c", c);
			c = getchar();
		}
	}

	PUZEL smaz;
	while ( koren != NULL) {
		
		smaz = koren;
		koren = koren->dalsi;
		free( smaz);
	}
	

	return 0;
}


PUZEL najdi_slovo( PUZEL koren, char *slovo)
{
	while ( koren != NULL) {
		if ( strcmp(koren->slovo, slovo) == 0)
			return koren;
		else
			koren = koren->dalsi;
	}

	return koren;
}



PUZEL nacti_slovnik()
{
	FILE *f;
	PUZEL koren, novy;
	char c;
	int pocet;
	char buffer1[MAX], buffer2[MAX];

	if ( (f = fopen( "slovnik.txt", "r")) == NULL) {
		printf( "Nepodarilo se otevrit soubor.");
		return NULL;
	}

	koren = ( PUZEL) malloc( sizeof(UZEL));
	koren->dalsi = NULL;
	koren->slovo[0] = '\0';
	koren->preklad[0] = '\0';

	while ( (c = getc( f)) != EOF) {
		pocet = 0;

		while ( isalpha( c) && pocet < MAX) {
			buffer1[pocet] = c;
			pocet++;

			c = getc( f);
		}

		if ( pocet < MAX ) {
			buffer1[pocet] = '\0';
			pocet = 0;

			while ( isalpha( (c = getc( f))) && pocet < MAX) {
				buffer2[pocet] = c;
				pocet++;
			}

			if ( pocet < MAX ) {
				buffer2[pocet] = '\0';
		

				novy = ( PUZEL) malloc( sizeof( UZEL));
				strcpy( novy->slovo, buffer1);
				strcpy( novy->preklad, buffer2);
				novy->dalsi = NULL;

				novy->dalsi = koren;
				koren = novy;
			}
		}

		while ( !( c == '\n' || c == EOF))
			c = getc( f);
	}

	return koren;
}