indexOf has two possible parameters. The first one is the value you are searching for, which in your code is arr[1].charAt(i). The second (optional) parameter is the index where you want to start. If this is not specified, it starts at 0. The problem is instead of specifying an integer, you have the following expression:

0 <= 0

Since 0 is less than or equal to 0, this evaluates to **true**. It appears (someone can correct me if I am wrong here) that JavaScript is taking this true value and converting it to the number 1, so basically in the first iteration of the for loop you have:

```
arr[0].indexOf(arr[1].charAt(0), 1)
```

and since **arr[1].charAt(0)** is the string **“h”** you are trying to find the first index where the letter **“h”** appears in **“hello”** (arr[1]) STARTING at index 1, you are only looking at **“ello”**. Since the letter **“h”** is not in **“ello”** it returns -1. So when your if statement is asking if -1 == -1 which is **true** which causes your solution to **return false;**

Changing your if statement to:

```
if (arr[0].indexOf(arr[1].charAt(i),0) == -1) {
```

will cause your code to return true in the first iteration. This will not solve the challenge, because you really only want to return true after iterating through the entire array.

You need to rethink your logic. One way to think about the problem is during each iteration, ask if the current letter of arr[1] is NOT present in arr[0], so you are checking if what is returned from the indexOf is less than 0. If it is, then return false. You do not need an else, because you do not want to do anything inside the for loop if the letter is found in arr[0]. Then after the for loop ends, you know you can safely return true, because it would have already returned false if a letter was not found.