#include <bits/stdc++.h>
using namespace std;

using VI = vector<int>;
using VVI = vector<VI>;
using PII = pair<int, int>;
using LL = long long;
using VL = vector<LL>;
using VVL = vector<VL>;
using PLL = pair<LL, LL>;
using VS = vector<string>;

#define ALL(a)  begin((a)),end((a))
#define RALL(a) (a).rbegin(), (a).rend()
#define PB push_back
#define EB emplace_back
#define MP make_pair
#define SZ(a) int((a).size())
#define SORT(c) sort(ALL((c)))
#define RSORT(c) sort(RALL((c)))
#define UNIQ(c) (c).erase(unique(ALL((c))), end((c)))

#define FOR(i,a,b) for(int i=(a);i<(b);++i)
#define REP(i,n)  FOR(i,0,n)

#define FF first
#define SS second
template<class S, class T>
istream& operator>>(istream& is, pair<S,T>& p){
  return is >> p.FF >> p.SS;
}
template<class S, class T>
ostream& operator<<(ostream& os, const pair<S,T>& p){
  return os << p.FF << " " << p.SS;
}
template<class T>
void maxi(T& x, T y){
  if(x < y) x = y;
}
template<class T>
void mini(T& x, T y){
  if(x > y) x = y;
}


const double EPS = 1e-10;
const double PI  = acos(-1.0);
const LL MOD = 1e9+7;

LL dp[151][151][11];

int main(){
  cin.tie(0);
  ios_base::sync_with_stdio(false);

  int N, M;
  while(cin>>N>>M,N){
	vector<vector<PII>> xs(N);
	REP(i,N){
	  int k; cin >> k;
	  REP(j,k){
		PII p;
		cin >> p.FF >> p.SS;
		xs[i].EB(p);
	  }
	}

	fill((LL*)dp, (LL*)dp+151*151*11, 1e15);
	REP(j,11)
	  dp[0][0][j] = dp[1][1][j] = 0;
	
	REP(i,N){
	  REP(k,M+1){
		for(int j1=0;j1<SZ(xs[i]);++j1){
		  if(i-1>=0)
			for(int j2=0;j2<SZ(xs[i-1]);++j2){
			  mini(dp[i][k][j1],
				   dp[i-1][k][j2] + abs(xs[i][j1].FF - xs[i-1][j2].FF)
				   * (xs[i][j1].SS + xs[i-1][j2].SS));
			}
		  if(i-2>=0)
			for(int j2=0;j2<SZ(xs[i-2]);++j2){
			  mini(dp[i][k+1][j1],
				   dp[i-2][k][j2] + abs(xs[i][j1].FF - xs[i-2][j2].FF)
				   * (xs[i][j1].SS + xs[i-2][j2].SS));
			}
		}
	  }
	}

	LL ans = 1e15;
	REP(k,M+1) REP(j,11) mini(ans, dp[N-1][k][j]);
	REP(k,M) REP(j,11) mini(ans, dp[N-2][k][j]);
	cout << ans << endl;
  }

  return 0;
}