#include <bits/stdc++.h>

using namespace std;

typedef pair<long long,long long> P;

#define INF (1000000000000000LL)
#define MIN(a,b) ((a)<(b)?(a):(b))
#define ABS(a) ((a>0)?(a):(-(a)))

int danger(P s, P t) {
    return (s.second+t.second)*ABS(s.first-t.first);
}

void solve(int n,int m) {
    vector<P> mp[n];
    vector<int> ki(n,0);

    for(int i=0; i<n; ++i) {
        cin >> ki[i];
        for(int j=0; j<ki[i]; ++j) {
            long long a,b;
            cin >> a >> b;
            mp[i].push_back(P(a,b));
        }
    }

    long long dp[m+1][n][10];
    for(int i=0; i<=m; ++i)
        for(int j=0; j<n; ++j)
            for(int k=0; k<10; ++k)
                dp[i][j][k]=INF;
    
    for(int k=0; k<ki[0]; ++k) dp[0][0][k]=0;
    if(m>0) for(int k=0; k<ki[1]; ++k) dp[1][1][k]=0;

    long long ans=INF;

    for(int i=0; i<=m; ++i) {
        for(int j=0; j<n; ++j) {
            for(int k=0; k<ki[j]; ++k) {
                if(j==n-1 || (j==n-2 && i<m)) ans=MIN(ans,dp[i][j][k]);
                if(j==n-1) continue;
                for(int l=0; l<ki[j+1]; ++l) {
                    dp[i][j+1][l]=MIN(dp[i][j+1][l],dp[i][j][k]+danger(mp[j][k],mp[j+1][l]));
                }
                if(j==n-2 || i==m) continue;
                for(int l=0; l<ki[j+2]; ++l) {
                    dp[i+1][j+2][l]=MIN(dp[i+1][j+2][l],dp[i][j][k]+danger(mp[j][k],mp[j+2][l]));
                }
            }
        }
    }

    cout << ans << endl;

    return;
}


int main() {
    while(true) {
        int n,m;
        cin >> n >> m;
        if(n==0 && m==0) break;
        solve(n,m);
    }
    return 0;
}