#include <bits/stdc++.h>
using namespace std;
int n, k, a[((int)1001 * 1000)], maxi, mini;
vector<int> v;
int jaghool;
bitset<((int)1001 * 1000)> dp, mark;
int main() {
  scanf("%d%d", &n, &k);
  int k2 = k;
  for (int i = 1; i <= n; i++) scanf("%d", &a[i]);
  for (int i = 1; i <= n; i++)
    if (!mark[i]) {
      int x = a[i], p = 1;
      while (x != i) p++, mark[x] = 1, x = a[x];
      v.push_back(p);
      maxi += min(k2, p / 2) * 2, k2 -= min(k2, p / 2);
      if (p % 2) jaghool++;
    }
  maxi += min(k2, jaghool);
  dp[0] = 1;
  sort(v.begin(), v.end());
  v.push_back(-1);
  vector<int> v2;
  for (int i = 0, cnt = 1; i < v.size(); i++) {
    if (v[i] != v[i + 1]) {
      int x = v[i];
      while (cnt) {
        dp |= (dp << v[i]);
        for (int j = 0; j < ((int)20); j++) {
          if ((1 << j) <= cnt && cnt < (1 << (j + 1))) {
            cnt -= (1 << j);
            break;
          }
          dp |= (dp << (v[i] << j));
        }
      }
      cnt = 1;
    } else
      cnt++;
  }
  cout << k + 1 - dp[k] << " " << maxi << "\n";
  return 0;
}
