#include <bits/stdc++.h>
using namespace std;
const double pi = acos(-1.0);
template <typename T, typename U>
inline void amin(T& x, U y) {
  if (y < x) x = y;
}
template <typename T, typename U>
inline void amax(T& x, U y) {
  if (x < y) x = y;
}
template <typename T>
inline void write(T x) {
  int i = 20;
  char buf[21];
  buf[20] = '\n';
  do {
    buf[--i] = x % 10 + '0';
    x /= 10;
  } while (x);
  do {
    putchar(buf[i]);
  } while (buf[i++] != '\n');
}
template <typename T>
inline T readInt() {
  T n = 0, s = 1;
  char p = getchar();
  if (p == '-') s = -1;
  while ((p < '0' || p > '9') && p != EOF && p != '-') p = getchar();
  if (p == '-') s = -1, p = getchar();
  while (p >= '0' && p <= '9') {
    n = (n << 3) + (n << 1) + (p - '0');
    p = getchar();
  }
  return n * s;
}
class Debugger {
 public:
  Debugger(const std::string& _separator = " - ")
      : first(true), separator(_separator) {}
  template <typename ObjectType>
  Debugger& operator,(const ObjectType& v) {
    if (!first)
    std:
      cerr << separator;
    std::cerr << v;
    first = false;
    return *this;
  }
  ~Debugger() {
  std:
    cerr << endl;
  }

 private:
  bool first;
  std::string separator;
};
template <typename T>
void write_vector(const vector<T>& V) {
  cout << "The numbers in the vector are: " << endl;
  for (int i = 0; i < V.size(); i++) cout << V[i] << " ";
}
int main() {
  int n, k;
  cin >> n >> k;
  unsigned long long int leftover = 0;
  int cand;
  int days = 0;
  for (int i = 0; i < n; i++) {
    cin >> cand;
    if (k > 0) {
      days++;
      if (cand > 8) {
        leftover += (cand - 8);
        k -= 8;
      } else {
        k = k - cand;
        if (leftover > 0) {
          int left = 8 - cand;
          if (leftover > left) {
            leftover -= left;
            k -= left;
          } else {
            k -= leftover;
            leftover -= leftover;
          }
        }
      }
    }
  }
  if (k > 0)
    cout << "-1";
  else
    cout << days;
  return 0;
}
