def GetOptions(caps, jugs): options = [] for a in range(len(jugs)): for b in range(len(jugs)): if a != b and jugs[a] > 0 and jugs[b] != caps[b]: options.append([">", str(a), str(b)]) for i in range(len(jugs)): if jugs[i] > 0: options.append(["E", str(i)]) for i in range(len(jugs)): if jugs[i] != caps[i]: options.append(["F", str(i)]) return options def IsJugs(jugs): try: for i in jugs: int(i) except: return False return True def Expand(inst, caps): if IsJugs(inst): opts = GetOptions(caps, inst) result = [] for i in opts: nj = inst[:] param = i if i[0] == "E": nj[int(param[1])] = 0 result += [nj] if i[0] == "F": nj[int(param[1])] = caps[int(param[1])] result += [nj] if i[0] == ">": amount = min(caps[int(param[2])] - nj[int(param[2])], nj[int(param[1])]) nj[int(param[1])] -= amount nj[int(param[2])] += amount result += [nj] else: result = [] for i in inst: result += Expand(i, caps) result = RemoveDuplicates(result) return result def CheckJugs(jugs, target): if IsJugs(jugs): for i in jugs: if i == target: return True else: for j in jugs: for i in j: if i == target: return True return False def RemoveDuplicates(array): a = 0 while a < len(array): b = 0 while b < len(array): if a != b and a < len(array): if array[a] == array[b]: array = array[:a] + array[a+1:] b += 1 a += 1 return array line1 = raw_input().split(" ") line2 = raw_input().split(" ") target = int(line1[1]) caps = [int(i) for i in line2] jugs = [0 for i in caps] steps = 0 while CheckJugs(jugs, target) == False: jugs = Expand(jugs, caps) steps += 1 print steps