/*
TASK: wac
LANG: C++
*/

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

#include "module.h"

#define MAX		(1<<20)

int		n, currcell;
char	*words[MAX], *numbers[MAX], *pre[MAX];
int		last[MAX];

int findPosition(char *num)
{
	int i;

	for(i=0; i<currcell; i++)
		if(strcmp(num, numbers[i]) == 0)
			break;

	if(i == currcell)
		numbers[currcell++] = strdup(num);

	return i;
}

int main()
{
	char	tmpstr[64], tmp[32], prefix[32], number[32];
	int		j, t, len;

	init();

	while(1)
	{
		getQuery(tmpstr);
		if(tmpstr[0]=='F')	sscanf(tmpstr, "%s %s %s", tmp, number, prefix);
		else				sscanf(tmpstr, "%s %s", tmp, number);

		if(tmp[0]=='A')
			words[n++] = strdup(number);
		else
		{
			t = findPosition(number);
			if(tmp[0] == 'F')
			{
				if(pre[t])
					delete[] pre[t];
				pre[t] = strdup(prefix);
				last[t] = -1;
			}

			len = strlen(pre[t]);

			for(j=last[t]+1; j<n; j++)
				if(strncmp(words[j], pre[t], len) == 0)
					break;

			if(j == n)
			{
				for(j=0; j<=last[t]; j++)
					if(strncmp(words[j], pre[t], len) == 0)
						break;
				if(j<=last[t])
				{
					answerQuery(words[j]);
					last[t] = j;
				}
				else
					answerQuery(".");
			}
			else
			{
				answerQuery(words[j]);
				last[t] = j;
			}
		}
	}

	return 0;
}
