测试样例全都通过,为什么还显示部分正确

问题遇到的现象和发生背景
问题相关代码,请勿粘贴截图
运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int f(char *s1,char *s2,int l1,int l2,int t,int t0)
{
    int m=1;
    for(; *s1!='\0' && *s2!='\0'; s1++,t++)
    {
        if((l1-t<l2-t0) || (l1-t==l2-t0 && *s1!=*s2))
        {
            m=0;
            break;
        }
        if(*s1==*s2)
        {
            if(*(++s2)!='\0')
            {
                s1++;
                t++;
                t0++;
                m=f(s1,s2,l1,l2,t,t0);
            }
            break;
        }
    }
    return(m);
}

int main()
{
    char a[1002],b[1002],*p1,*p2;
    int len1,len2,q=1,h,q0=1;
    int f(char *s1,char *s2,int l1,int l2,int t,int t0);
    fgets(a,1002,stdin);
    fgets(b,1002,stdin);
    len1= strlen(a) - 1;
    if(a[len1]=='\n')a[len1]='\0';
    len2=strlen(b)-1;
    if(b[len2]=='\n')b[len2]='\0';
    p1=a;
    p2=b;
    h=f(p1,p2,len1,len2,q,q0);
    printf("%d",h);
    return 0;
}