#include <bits/stdc++.h>
using namespace std;
long long h, w;
long long a[105][105], sum[105][105];
long long dp[105][105];
long long get(long long l, long long r) {
  if (l > r) return 0;
  return sum[w][r] - sum[l - 1][r];
}
int main(void) {
  ios::sync_with_stdio(0);
  cin.tie(0);
  cin >> h >> w;
  long long k, l, r;
  for (int i = 1; i <= h; i++) {
    cin >> k;
    for (int j = 1; j <= k; j++) {
      cin >> l >> r;
      a[l][r]++;
    }
  }
  for (int i = 1; i <= w; i++) {
    for (int j = 1; j <= w; j++) {
      sum[i][j] = sum[i - 1][j] + sum[i][j - 1] - sum[i - 1][j - 1] + a[i][j];
    }
  }
  for (int len = 1; len <= w; len++) {
    for (int l = 1; l + len - 1 <= w; l++) {
      long long r = l + len - 1;
      for (int i = l; i <= r; i++) {
        long long cost = get(l, r) - get(l, i - 1) - get(i + 1, r);
        if (cost == 0) continue;
        dp[l][r] = max(dp[l][r], dp[l][i - 1] + dp[i + 1][r] + cost * cost);
      }
    }
  }
  cout << dp[1][w] << endl;
  return 0;
}
