#include <bits/stdc++.h>
using namespace std;
const int INF = (int)2e9;
const long long INFL = (long long)9e18;
const int MAXINT = ((~0) ^ (1 << 31));
const long long MAXLL = ((~0) ^ ((long long)1 << 63));
template <class T>
inline T pow2(T a) {
  return a * a;
}
template <class T>
inline bool mineq(T& a, T b) {
  return (a > b) ? (a = b, true) : false;
}
template <class T>
inline bool maxeq(T& a, T b) {
  return (a < b) ? (a = b, true) : false;
}
const int maxn = 1e6 + 100;
bitset<maxn> dp;
int n, p[maxn], k, cnt[maxn], a, b;
bool vis[maxn];
int32_t main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cin >> n >> k;
  for (int i = 0; i < (int)(n); i++) {
    cin >> p[i];
    p[i]--;
  }
  for (int i = 0; i < (int)(n); i++) {
    if (vis[i]) continue;
    int tmp = i, len = 0;
    while (!vis[tmp]) {
      vis[tmp] = true;
      len++;
      tmp = p[tmp];
    }
    cnt[len]++;
    a += len % 2;
    b += len / 2;
  }
  dp[0] = true;
  for (int i = 1; i < (int)(n + 1); i++) {
    int j = 1;
    while (cnt[i]) {
      j = min(j, cnt[i]);
      cnt[i] -= j;
      dp |= dp << (i * j);
      j *= 2;
    }
  }
  int mn = k + !dp[k];
  int mx = min(2 * k, min(n, k + b));
  cout << mn << " " << mx << endl;
}
