#include <bits/stdc++.h>
using namespace std;
const int maxm = 1e6 + 5;
vector<int> ve[maxm];
int a[maxm];
int sum[maxm];
int n, m;
void add(int l, int r) { a[l]++, a[r + 1]--; }
int main() {
  scanf("%d%d", &n, &m);
  memset(a, 0, sizeof(a));
  memset(sum, 0, sizeof(sum));
  int k, x;
  for (int i = 1; i <= n; i++) {
    scanf("%d", &k);
    ve[i].push_back(k);
    while (k--) {
      scanf("%d", &x);
      ve[i].push_back(x);
    }
  }
  for (int i = 2; i <= n; i++) {
    int mi = min(ve[i][0], ve[i - 1][0]);
    int ind = 1;
    while (ind <= mi && ve[i][ind] == ve[i - 1][ind]) ind++;
    if (ind > mi) {
      if (ve[i][0] >= ve[i - 1][0])
        add(0, m - 1);
      else {
        printf("-1\n");
        return 0;
      }
    } else {
      if (ve[i - 1][ind] < ve[i][ind]) {
        add(0, m - ve[i][ind]);
        add(m - ve[i - 1][ind] + 1, m - 1);
      } else {
        add(m - ve[i - 1][ind] + 1, m - ve[i][ind]);
      }
    }
  }
  sum[0] = a[0];
  if (sum[0] == n - 1) {
    printf("0\n");
    return 0;
  } else {
    for (int i = 1; i < m; i++) {
      sum[i] = sum[i - 1] + a[i];
      ;
      if (sum[i] == n - 1) {
        printf("%d\n", i);
        return 0;
      }
    }
  }
  printf("-1\n");
  return 0;
}
