Polycarp's phone book contains n phone numbers, each of them is described by s_i — the number itself and m_i — the number of times Polycarp dials it in daily.

Polycarp has just bought a brand new phone with an amazing speed dial feature! More precisely, k buttons on it can have a number assigned to it (not necessary from the phone book). To enter some number Polycarp can press one of these k buttons and then finish the number using usual digit buttons (entering a number with only digit buttons is also possible).

Speed dial button can only be used when no digits are entered. No button can have its number reassigned.

What is the minimal total number of digit number presses Polycarp can achieve after he assigns numbers to speed dial buttons and enters each of the numbers from his phone book the given number of times in an optimal way?

Input

The first line contains two integers n and k (1 ≤ n ≤ 500, 1 ≤ k ≤ 10) — the amount of numbers in Polycarp's phone book and the number of speed dial buttons his new phone has.

The i-th of the next n lines contain a string s_i and an integer m_i (1 ≤ m_i ≤ 500), where s_i is a non-empty string of digits from 0 to 9 inclusive (the i-th number), and m_i is the amount of times it will be dialed, respectively.

It is guaranteed that the total length of all phone numbers will not exceed 500.

Output

Print a single integer — the minimal total number of digit number presses Polycarp can achieve after he assigns numbers to speed dial buttons and enters each of the numbers from his phone book the given number of times in an optimal way.

Examples

Input


3 1
0001 5
001 4
01 1


Output


14


Input


3 1
0001 5
001 6
01 1


Output


18

Note

The only speed dial button in the first example should have "0001" on it. The total number of digit button presses will be 0 ⋅ 5 for the first number + 3 ⋅ 4 for the second + 2 ⋅ 1 for the third. 14 in total.

The only speed dial button in the second example should have "00" on it. The total number of digit button presses will be 2 ⋅ 5 for the first number + 1 ⋅ 6 for the second + 2 ⋅ 1 for the third. 18 in total.
#include <bits/stdc++.h>
using namespace std;
template <class T>
inline void cmin(T &a, T b) {
  ((a > b) && (a = b));
}
template <class T>
inline void cmax(T &a, T b) {
  ((a < b) && (a = b));
}
char IO;
template <class T = int>
T rd() {
  T s = 0;
  int f = 0;
  while (!isdigit(IO = getchar())) f |= IO == '-';
  do s = (s << 1) + (s << 3) + (IO ^ '0');
  while (isdigit(IO = getchar()));
  return f ? -s : s;
}
const int N = 510, INF = 1e9 + 10;
int n, m;
int trie[N][10], cnt, c[N];
char s[N];
int dp[N][N][12];
int F[N][12], G[12], dep[N];
void dfs(int u) {
  for (int v : trie[u])
    if (v) dep[v] = dep[u] + 1, dfs(v);
  memset(F, 63, sizeof F);
  for (int i = 0, iend = dep[u]; i <= iend; ++i) F[i][0] = c[u] * (dep[u] - i);
  for (int v : trie[u])
    if (v) {
      for (int j = 0, jend = dep[u]; j <= jend; ++j) {
        for (int k = 0, kend = m; k <= kend; ++k) G[k] = F[j][k], F[j][k] = INF;
        for (int k = 0, kend = m; k <= kend; ++k)
          for (int d = 0, dend = m - k; d <= dend; ++d)
            cmin(F[j][k + d], G[k] + dp[v][j][d]);
      }
    }
  for (int d = 0, dend = dep[u]; d <= dend; ++d) {
    for (int i = 0, iend = m; i <= iend; ++i) dp[u][d][i] = INF;
    for (int i = 0, iend = m; i <= iend; ++i) {
      cmin(dp[u][d][i + 1], F[dep[u]][i]);
      cmin(dp[u][d][i], F[d][i]);
    }
  }
}
int main() {
  n = rd(), m = rd();
  for (int i = 1, iend = n; i <= iend; ++i) {
    scanf("%s", s + 1);
    int u = 0;
    for (int j = 1; s[j]; ++j) {
      int &v = trie[u][s[j] - '0'];
      if (!v) v = ++cnt;
      u = v;
    }
    c[u] += rd();
  }
  dfs(0);
  int ans = INF;
  for (int i = 0, iend = m; i <= iend; ++i) cmin(ans, dp[0][0][i]);
  printf("%d\n", ans);
}
