C++一本通1400有问题

C++一本通1400统计单词数,我用字符数组写了一下,但是一部分对一部分错,不太理解,有没有学长帮忙看一下
http://ybt.ssoier.cn:8088/problem_show.php?pid=1400

#include<iostream>
#include<cstring>
#define N 1001
using namespace std;
char word[N]; 
char article[N]; 
char to_l(char c){
    if (c<='z' and c>='a'){
        return c;
    }
    else{
        return (c+32);
    }
}
int main(){
    int n,ar_len=0,tong=0,first=-1;
    cin>>word;
    getchar();
    cin.getline(article,N);
    int word_l=strlen(word);
    int article_l=strlen(article);
    article[article_l]=' ';//加一个空格进来方便判断 
    
    for(int i=0;i<=article_l;i++){
        if(article[i]!=' '){
            ar_len++;//记录文章里单独单词的长度 
        }else{
            if(ar_len==word_l){//如果长度和目标单词一致再进行后续判断 
                int num=0;//相同字母的计数 
                for(int j=0;j<word_l;j++){//把每一位单词和文章里指定位置判断 
                    if(to_l(word[j])==to_l(article[i-word_l+j])){
                        num++;
                    }
                }
                if(num==word_l){//如果相同单词数==单词长度 
                    if (first==-1){
                        first=i-word_l;//记录首地址 
                    }
                    tong++;//相同数 
                }
            }
            ar_len=0;//文章里字符数重新统计 
        }
    }
    if(tong!=0){
        cout<<tong<<' '<<first;
    } else{
        cout<<-1;
    }
    return 0;
}


img

img

img

题目有限制字符串长度1000?

有这么复杂吗