#include <bits/stdc++.h>
using namespace std;
const int N = 1 << 20;
struct SSS {
  int tot;
  bitset<N> ok;
  SSS(const vector<int>& a) : tot(0), ok(1) {
    vector<int> c(N, 0);
    for (int x : a) tot += x, c[x]++;
    for (int sum = 0, i = 1; i <= tot >> 1; i++)
      if (c[i] > 0) {
        for (int m = min(tot >> 1, sum += i * c[i]), j = max(m - i + 1, 1);
             j <= m; j++) {
          int cnt = 0;
          for (int k = 0; k < c[i] && j >= i * k; k++) cnt += ok[j - i * k];
          for (int k = j; k > 0; k -= i) {
            cnt -= ok[k];
            if (k >= i * c[i]) cnt += ok[k - i * c[i]];
            if (cnt > 0) ok[k] = true;
          }
        }
      }
  }
  bool operator[](int n) const {
    return n < 0 || n > tot ? false : ok[min(n, tot - n)];
  }
};
int mini(const vector<int>& a, int m) { return SSS(a)[m] ? m : m + 1; }
int maxi(const vector<int>& a, int m) {
  int ans = 0, odd = 0;
  for (int x : a) {
    int tmp = min(x >> 1, m);
    odd += x & 1;
    ans += tmp << 1;
    m -= tmp;
  }
  return ans + min(odd, m);
}
int main() {
  int n, m;
  scanf("%d%d", &n, &m);
  vector<int> p(n + 1, 0);
  for (int i = 1; i <= n; i++) scanf("%d", &p[i]);
  vector<int> a;
  for (int i = 1; i <= n; i++) {
    int cnt = 0;
    for (int x = i; p[x] > 0; cnt++) {
      int tmp = p[x];
      p[x] = 0;
      x = tmp;
    }
    if (cnt > 0) a.push_back(cnt);
  }
  printf("%d %d\n", mini(a, m), maxi(a, m));
}
