#include <bits/stdc++.h>
using namespace std;
const int N = 10 * 100 * 1000 + 10;
vector<int> vec[N];
int bit[N];
int n, c;
void addbit(int i, int p) {
  for (i++; i <= c; i += (i & -i)) bit[i] += p;
}
int get(int i) {
  int x = 0;
  for (i++; i > 0; i -= (i & -i)) x += bit[i];
  return x;
}
void add(int l, int r) {
  addbit(l, 1);
  addbit(r, -1);
}
int main() {
  cin >> n >> c;
  for (int i = 0; i < n; i++) {
    int t;
    cin >> t;
    for (int j = 0; j < t; j++) {
      int a;
      cin >> a;
      vec[i].push_back(a - 1);
    }
  }
  for (int i = 0; i < n - 1; i++) {
    int j = 0, k = 0;
    while (j < (int)vec[i].size() && k < (int)vec[i + 1].size() &&
           vec[i][j] == vec[i + 1][k])
      j++, k++;
    if (j == (int)vec[i].size())
      add(0, c);
    else if (k == (int)vec[i + 1].size()) {
      cout << "-1\n";
      return 0;
    } else {
      int a = vec[i][j], b = vec[i + 1][k];
      int li = (c - a) % c, ri = (c - b) % c;
      if (li < ri)
        add(li, ri);
      else
        add(li, c), add(0, ri);
    }
  }
  for (int i = 0; i < c; i++)
    if (get(i) >= n - 1) {
      cout << i << endl;
      return 0;
    }
  cout << -1 << endl;
  return 0;
}
