strlen은 반환값이 int타입이 아니라 size_t타입으로 unsigned int타입의 데이터 형식이라고 하네요. 그래서 size_t끼리의 연산값의 결과도 unsigned int타입이라서 결과가 음수가 나오면 언더플로우가 일어나 최댓값이 될 수 있어요.
간단한 코드가 예상과 다른 결과를 낸다면 기본부터 확인하는게 좋아요. 잘못알고 있는 기반지식 때문에 틀리는 경우도 있거든요.
str2의 길이가 str1의 길이보다 길 경우에 문제의 조건을 만족할 수 없으므로 바로 2를 반환할 수 있도록 조건문을 설정해주셔야 합니다.
1번 7번 케이스만 틀리다고 나오시면 이 부분 수정하시면 정답 나오실거에요