# Codility – FrogRiverOne Code Answer

Hello Developer, Hope you guys are doing great. Today at Tutorial Guruji Official website, we are sharing the answer of Codility – FrogRiverOne without wasting too much if your time.

The question is published on by Tutorial Guruji team.

I’ve googled and asked people about this question, but can’t get the meaning. I know my solution is incorrect, but I hope it can help (it’s on JS):

```let C = [1, 3, 1, 4, 2, 3, 5, 4],
Y = 4;

function solution(X, A) {

var leaves = [];
var i = 0;
var result = -1;

for (i = 0; i < A.length; i++) {
if (typeof leaves[A[i]] == 'undefined') {
leaves[A[i]] = i;
}
}

if (leaves.length <= X) {
return -1;
}

for (i = 1; i <= X; i++) {
if (typeof leaves[i] == 'undefined') {
return -1;
} else {
result = Math.max(result, leaves[i]);
}
}

return result;
}

console.log(solution(Y, C));```

I don’t need a solution to the task, I just need its clearer explanation, i.e what I have to do to solve it.

Okay, I figured out your problem for you. Your solution is actually almost correct, but you overcomplicated the evaluation. All you have to do is initialize a counter variable to 0, and as you iterate over A in the first loop, whenever `leaves[A[i]]` is `undefined`, increment this counter. This indicates that a leaf has fallen into a position where there is no leaf yet. If after incrementing the counter is equal to X, it means all positions now have leaves on them, so just return `i`. If your loop makes it all the way to the end of `A`, it means there are uncovered positions, so return -1.