Depth. Subject toprovisions hereof, the wells shall be drilled to the depth specified below: Turnkey Depth: The well shall be drilled up to 2000 feet or ____________ of the _________________ formation, or the depth at which the _____________ inchcasing or linerset, whichever is the lesser depth, which will herein be referred to as the Turnkey Depth.

Depth the number ofsteps along the path from the initial state.The difference between nodes and states, a node is bookkeepingdata structure used to represent the searchtree. A state corresponds to a configuration of the world.To represent the collection of nodes that have been generated but not yet expanded – this collection is calledfringe. Each element of the fringe is a leaf node, that is, a node with no successors in the tree. The representation of the fringe would be a set of nodes. The search strategy then would be a function that selects the next node to be expanded from this set. It could be computationally expensive, because the strategy function might have to look at every element of the set to choose the best one. Alternatively, the collection of nodes is implemented as a queue representation. The queue operations as follows:✓ MAKE-QUEUE (element…) – creates a queue with the given elements.✓ EMPTY? (queue) – returnstrue only if there are no more elements in the queue.✓ FIRST (queue) – returns the first element of the queue.✓ REMOVE-FIRST (queue) returns FIRST (queue) and removes it from the queue.✓ INSERT (element, queue) – inserts an element into the queue and the resulting queue.✓ INSERT-ALL (elements, queue) – inserts a set of elements into the queue and returns the resulting queue.The formalversion of the general tree-search algorithmshown in figure. function TREE-SEARCH(problem, fringe) returns a solution, or failure fringe ← INSERT(MAKE-NODE(INITIAL-STATE[problem]),fringe) loop doif EMPTY?(fringe) then return failurenode ← REMOVE-FIRST(fringe)if GOAL-TEST[problem] applied to STATE[node] succeedsthen return SOLUTION(node)fringe ← INSERT-ALL(EXPAND(node, problem),fringe) function EXPAND(node, problem) returns a set of nodessuccessors ← the empty setfor each <action, result> in SUCCESSOR-FN[problem](STATE[node]) dos ← a new NODE STATE[s] ← result PARENT-NODE[s] ← node ACTION[s] ← actionPATH-COST[s] ← PATH-COST [node] + STEP-COST (node, action, s)DEPTH[s] ← DEPTH [node] + 1add s to successorsreturn successors Figure: The General Tree-Search AlgorithmMeasuring problem-solving performance The output of a problem-solving is either failure or a solution. We will evaluate an algorithm‘s performance in four ways:✓ Completeness: The strategy guaranteed to find a solution when there is one.✓ Optimality: If more than one way exists to derivethe solution then the best one is selected.✓ Time complexity: Time taken to run a solution.✓ Space complexity: ...