Given a set of 3 jugs of water that have capacities of a, b, and c liters, find the minimum number of operations performed before each jug has x, y, and z liters. Only jug C will start completely filled.
An operation is any of the following: A jug is emptied, a jug is filled, or water is poured from one jug to another until one of the jugs is either empty or full.
For example, jugs "A", "B", and "C" with capacities of 3, 5, and 8, where jugs "A" and "B" start empty and "C" has the full 8, require 2 operations to reach the state of 0, 3, and 5 liters in the jugs.
Create a function that, given an array of jug capacities [A, B, C] and an goal state array [x, y, z], returns the minimum number of operations needed to reach the goal state. If the inputs are invalid or there is no solution, return "No solution."
waterjug([3, 5, 8], [0, 3, 5]) ➞ 2
waterjug([1, 3, 4], [0, 2, 2]) ➞ 3
waterjug([8, 17, 20], [0, 10, 10]) ➞ 9
waterjug([4, 17, 22], [2, 5, 15]) ➞ "No solution."
waterjug([3, 5, 8], [0, 0, 9]) ➞ "No solution."