The function strlen has the unsigned return type size_t
size_t strlen(const char *s);
Usually the type size_t is an alias for the type unsigned long.
In any case the rank of the unsigned type size_t is not less than the rank of the signed type int.  So due to the usual arithmetic conversion an operand of the signed type int is converted to the type size_t and if the operand of the type int has a negative value than due to propagating the sign bit it becomes a big unsigned value.
So in this expression
-1 < strlen(string)
of the type size_t (the common type of the expression) the left operand after conversion to the type size_t becomes greater than the right operand.
Consider the following demonstration program.
#include <stdio.h>
int main( void )
{
    printf( "-1 = %d\n", -1 );
    printf( "( size_t )-1 = %zu\n", ( size_t )-1 );
    return 0;
}
Its output might look like
-1 = -1
( size_t )-1 = 4294967295