I have the following list:

```
["A";"AA";"ABC";"BCD";"B";"C"]

```

I am randomly extracting an element from the list. But the element I extract should be of size 3 only not lesser than 3.

I am trying to do this as follows:

```
let randomnum = (Random.int(List.length (list)));;
let rec code c =
    if (String.length c) = 3 then c
    else (code ((List.nth (list) (randomnum)))) ;;
print_string (code ( (List.nth (list) (randomnum)))) ;;

```

This works fine if randomly a string of length 3 is picked out from the list.

But the program does not terminate if a string of length < 3 is picked up.
I am trying to do a recursive call so that new code keeps getting picked up till we get one of length = 3.

I am unable to figure out why this is does not terminate. Nothing gets output by the print statement.