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


void check_ttl(int live, int node, int **tenging,int *hit, int cnt)
{
	int i;
	//printf("Er að heimsækja %d\n",node);
	hit[node] = 1;
	if (!live){ 
		return;
	}
	
	for (i=0; i<cnt; i++)
	{
		//printf("tenging milli %d og %d er %d\n",node,i,tenging[node][i]);
		if(tenging[node][i]){
			check_ttl(live-1,i,tenging,hit,cnt);
		}
	}
}

int check_index(int node, int *index, int *cnt)
{
	int i;
	for (i=0; i<*cnt; i++)
	{
		if(index[i] == node)
			return i;
	}
	index[*cnt] = node;
	++*cnt;
	return *cnt-1;

}

int main()
{
	int num_teng, from, to, ttl, i, x, index[30], num_case = 1, hit[30], no_hits, cnt;
	int **tenging; 

	tenging = (int **)malloc(sizeof(int **) *30);

	for(i=0; i<30; i++)
	{
		tenging[i] = (int *)malloc(sizeof(int *) *30);
	}




	while (scanf("%d", &num_teng), num_teng)
	{
		for(i=0; i<30; i++)
		{
			for(x=0; x<30; x++)
			{
				tenging[i][x] = 0;
			}
		}

		cnt = 0;

		for (i=0; i<num_teng; i++)
		{
			scanf("%d %d", &from, &to);
			//printf("frá %d til %d\n",from,to);
			from = check_index(from,index,&cnt);
			to = check_index(to,index,&cnt);
			//printf("Breytt i  %d til %d\n",from,to);
			tenging[from][to] = 1;
			//printf("var að setja tenging[%d][%d] sem %d\n",from,to,tenging[from][to]);
			tenging[to][from] = 1;
		}
		while (scanf("%d %d", &from, &ttl), from || ttl)
		{
			//printf("frá %d ttl %d \n",from,ttl);
			for(i=0; i<30; i++)
			{
				hit[i] = 0;
			}

			check_ttl(ttl,check_index(from,index,&cnt),tenging,hit,cnt);
			no_hits = 0;
			//printf("fjöldi hnúta %d\n",cnt);
			for(i=0; i<cnt; i++)
			{
				if(!hit[i])
				{
					no_hits++;
				}
			}
			printf("Case %d: %d nodes not reachable from node %d with TTL = %d.\n", num_case++, no_hits, from, ttl);
		}

	}
}
