#include #include int c_zero, sum_sampl, *sampl; void putsamp(int k) { if (sampl[k] == 0) c_zero--; sum_sampl++; sampl[k]++; } void delsamp(int k) { sum_sampl--; sampl[k]--; if (sampl[k] == 0) c_zero++; } int main(){ int i, j, n, k, left, right, ans, c_semp; int ** array; while(1){ if (scanf("%i %i", &n, &k) != 2) break; array = malloc((sizeof(*array)*n)); for (i = 0; i < n; i++){ scanf("%i", &c_semp); *(array + i) = malloc(sizeof(int)*(c_semp+1)); **(array + i) = c_semp; for (j = 1; j <= c_semp; j++){ scanf("%i", (*(array + i) + j)); } } sampl = malloc (sizeof(int)*(k + 1)); for (i = 0; i < k + 1; i++) sampl[i] = 0; c_zero = k; sum_sampl = 0; left = 0; right = 0; ans = 100000000; for (i = 1; i <= **(array); i++) putsamp(*(*(array) + i)); while(1){ if (c_zero == 0) { if (sum_sampl < ans) ans = sum_sampl; for (i = 1; i <= **(array + left); i++) delsamp(*(*(array + left) + i)); left++; if (left == n) break; } else { right = (right + 1) % n; if ((right == 0) && (ans == 100000000)) break; for (i = 1; i <= **(array + right); i++) putsamp(*(*(array + right) + i)); } } if (ans == 100000000) printf("-1\n"); else printf("%i\n", ans); } return 0; }