#include <bits/stdc++.h>
using namespace std;
map<int, int> mp;
long long a[(int)1e5 + 5];
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  long long n, k;
  cin >> n >> k;
  for (int i = 0; i < n; i++) cin >> a[i];
  for (int i = 0; i < n; i++) mp[a[i]]++;
  deque<pair<long long, long long>> dq;
  for (auto x : mp) {
    dq.push_back(make_pair(x.first, x.second));
  }
  if (dq.size() == 1) {
    cout << 0;
    exit(0);
  }
  long long last = k;
  while (k && dq.size() != 1) {
    if (dq.front().second < dq.back().second) {
      long long go = dq[0].second * (dq[1].first - dq[0].first);
      if (go < k) {
        pair<long long, long long> now = dq[0];
        dq.pop_front();
        dq[0].second += now.second;
        k -= go;
      } else {
        dq[0].first += k / dq[0].second;
        k -= (k / dq[0].second) * dq[0].second;
      }
    } else {
      long long go =
          (dq.back().first - dq[dq.size() - 2].first) * dq.back().second;
      if (go < k) {
        pair<long long, long long> now = dq.back();
        dq.pop_back();
        dq.back().second += now.second;
        k -= go;
      } else {
        dq.back().first -= k / dq.back().second;
        k -= (k / dq.back().second) * dq.back().second;
      }
    }
    if (last == k) break;
    last = k;
  }
  cout << dq.back().first - dq[0].first << endl;
  return 0;
}
