function leastCost(input, cost) {
const candidatePos = AOC.sort([...new Set(input.map(AOC.identity))]);
let prevCost = cost(candidatePos[0], input);
let nextCost = cost(candidatePos[1], input);
let pos = 1;
while (nextCost < prevCost) {
prevCost = nextCost;
nextCost = cost(++pos, input);
}
return prevCost;
}