int rules[1001][1001];
int greet[1001];
int close[1001];
unsigned long long int pocet;
int sentences,length,greetings,closings;

void hledej(int minula, int delka) {
	int i = 0;
	int j;
	while (rules[minula][i] != 0) {
		if (delka == length-1) {
			for (j = 0; j < closings; j++)
				if (close[j] == rules[minula][i]) pocet++;
		}
		else 
		hledej(rules[minula][i], delka+1);
		i++;
	}
}

int main() {
	scanf("%i %i %i %i\n", &sentences, &length, &greetings, &closings);
	while (sentences == length == greetings == closings == 0) {

		int i,j,k;

		for (i = 0; i < sentences; i++) {
			int veta, pocet;
			scanf("%i %i", &veta, &pocet);
			for (j = 0; j < pocet; j++)
				scanf("%i", &rules[veta][j]);
			rules[veta][pocet] = 0;
		}

		for (i = 0; i < greetings; i++)
			scanf("%i\n", &greet[i]);
		for (i = 0; i < closings; i++)
			scanf("%i\n", &close[i]);

		pocet = 0;
		for (i = 0; i < greetings; i++) {
			hledej(greet[i], 1);
		}

		if (pocet == 0) 
			printf("impossible\n");
		else printf("%lli\n", pocet);

		scanf("%i %i %i %i\n", &sentences, &length, &greetings, &closings);
	}
	return 0;
}
