#include <bits/stdc++.h>
using namespace std;
static const double EPS = 1e-10;
template <typename T, typename S>
vector<T>& operator<<(vector<T>& a, S b) {
  a.push_back(b);
  return a;
}
template <typename T>
void operator>>(vector<T>& a, int b) {
  while (b--)
    if (!a.empty()) a.pop_back();
}
bool isprime(int n) {
  if (n < 2) return false;
  for (int i = 2; i * i <= n; i++)
    if (n % i == 0) return false;
  return true;
}
long long b_pow(long long x, long long n) {
  return n ? n == 1 ? x : b_pow(x, n >> 1) * b_pow(x, (n >> 1) + (n & 1)) : 1;
}
string itos(int n) {
  stringstream ss;
  ss << n;
  return ss.str();
}
int main() {
  ios_base::sync_with_stdio(true);
  string s;
  cin >> s;
  int n;
  cin >> n;
  vector<int> c(128);
  vector<int> k(128);
  for (int i = 0; i < 128; i++) k[i] = i;
  for (int i = 0; i < s.size(); i++) {
    c[s[i]]++;
  }
  for (int i = 0; i < 128; i++)
    for (int j = 0; j < 127; j++)
      if (c[j] > c[j + 1]) {
        swap(c[j], c[j + 1]);
        swap(k[j], k[j + 1]);
      }
  for (int i = 0; i < 128; i++) {
    while (n && c[i]) {
      c[i]--;
      n--;
    }
  }
  int data[128] = {0};
  for (int i = 0; i < 128; i++) data[k[i]] = c[i];
  cout << 128 - count(c.begin(), c.end(), 0) << endl;
  for (int i = 0; i < s.size(); i++) {
    if (data[s[i]]) {
      cout << s[i];
      data[s[i]]--;
    }
  }
  cout << endl;
}
