#include #include #define MAXN (65536 * 2) int main (void) { for (;;) { static unsigned dest[MAXN]; static char done[MAXN]; unsigned n, k, next, steps; scanf ("%u%u", &n, &k); if (n == 0 || k == 0) break; memset (dest, 0, (n + 1) * sizeof (*dest)); memset (done, 0, (n + 1) * sizeof (*done)); next = 1; while (k-- != 0) { unsigned s; scanf ("%u", &s); while (s-- != 0) { unsigned i; scanf ("%u", &i); dest[i] = next++; } } steps = 0; for (k = 1; k <= n; k++) { if (dest[k] != 0 && dest[k] != k && done[k] == 0) { unsigned t; for (t = k; dest[t] != 0 && dest[t] != k && done[t] == 0; t = dest[t]) { done[t] = 1; steps++; } if (dest[t] == k) { done[t] = 1; steps += 2; } } } if (steps == 0) printf ("No optimization needed.\n"); else printf ("We need %u move operations.\n", steps); } return EXIT_SUCCESS; }