#include <bits/stdc++.h>
using namespace std;
multiset<int> s, temp;
vector<int> v[5009];
int main() {
  int i, j, n, m, x, y, z, k, q, val;
  scanf("%d%d", &n, &m);
  for (i = 0; i < n; i++) {
    scanf("%d%d", &x, &y);
    if (x != 1) s.insert(y);
    v[x].push_back(y);
  }
  long long int ans = 10000000000000000;
  for (i = 1; i <= m; i++) {
    if (((int)(v[i]).size())) {
      sort(v[i].begin(), v[i].end());
    }
  }
  for (i = 1; i <= n; i++) {
    temp.clear();
    temp = s;
    val = ((int)(v[1]).size());
    long long int t = 0;
    for (j = 2; j <= m; j++) {
      if (((int)(v[j]).size()) >= i) {
        for (k = 0; k <= (((int)(v[j]).size()) - i); k++) {
          temp.erase(temp.find(v[j][k]));
          t += v[j][k];
          val++;
        }
      }
    }
    for (k = val + 1; k <= i; k++) {
      t += *temp.begin();
      temp.erase(temp.begin());
    }
    ans = min(ans, t);
  }
  cout << ans << " " << endl;
  ;
}
