关于统计英文字母的问题,如何解决?

一直AC不了,请帮忙修改~请不要只发个链接,啥都不说!!
Description
一个集合里只有小写字母(个数不超过1000),集合会以括号的形式给出,
小写字母用逗号分隔开来,现在问你该集合里有多少互不相同的英文字母。
Input
每组测试数据一行,表示一个只有小写字母的集合,小写字母个数 <= 1000。
Output
对于每一组测试数据输出该集合里有多少互不相同的英文字母。
Sample Input 1
{a, b, c}
{b, a, b, a}
Sample Output 1
3
2
我写的代码如下:

#include 
#include 
#include 
int main()
{
  char temp;
  int count,flag[123];
  while((temp=getchar()) != EOF)
  {
    if(temp == '{')
    {
      count=0;
      memset(flag,0,sizeof(flag));
      continue;
    }
    else if(islower(temp) && !flag[temp])
    {
      count++;
      flag[temp]=1;
      continue;
    }
    else if(temp == '}')
    {
      printf("%d\n",count);
      continue;
    }
    else
      continue;
  }
  return 0;
}

运行后judger给的结果是WA

输入方式做个修改,供参考:

#include <stdio.h>
#include <string.h>
#include <ctype.h>
int main()
{
  char str[2002];
  int  i,cnt,flag[123]={0};
  while((gets(str)) != NULL) //ctrl+z 结束输入
  {
    memset(flag,0,sizeof(flag));
    for (i=0,cnt=0;str[i];i++)
    {
        if(str[i] == '{' || str[i] == ',' || str[i] == '}')
            continue;
        if(islower(str[i]) && !flag[str[i]])
        {
            cnt++;
            flag[str[i]]=1;
        }
    }
    printf("%d\n",cnt);
  }
  return 0;
}

我给你写了一版,供你参考。

#include <stdio.h>
#include <string.h>
#include <ctype.h>

int main() {
    char str[1001];
    int  i, cnt, flag[26] = {0};
    while ((gets(str)) != NULL) {
        cnt = 0;
        memset(flag, 0, sizeof(flag));
        for (i = 0; str[i]; i++) {
            if (str[i] >= 'a' && str[i] <= 'z')
                flag[str[i] - 'a']++;
        }
        for (int i = 0; i < 26; i++) {
            if (flag[i])
                cnt++;
        }
        printf("%d\n", cnt);
    }

    return 0;
}