#include int main() { int sem[100010], kam[100010], n, k, i, j, oper, x; scanf("%i %i", &n, &k); while(n!=0 || k!=0) { // printf("%i %i\n", n, k); j = 1; oper = 0; for(i=1; i<=n; i++) kam[i] = 0; for(; k>0; k--) { scanf("%i", &x); // printf("%i\n", x); for(; x>0; x--) { scanf("%i", sem + j); kam[sem[j]] = j; j++; } } k = j - 1; for(i=1; i<=k; i++) { if(sem[i] != i) { j = i; while(kam[j] != 0 && kam[j] != i) { x = kam[j]; kam[j] = sem[j] = j; oper++; j = x; } if(kam[j] == 0) { kam[sem[j]] = 0; sem[j] = j; oper++; } else { kam[j] = sem[j] = j; oper += 2; } } } if(oper == 0) printf("No optimization needed.\n"); else printf("We need %i move operations.\n", oper); scanf("%i %i", &n, &k); } }