#include <stdio.h>
#define LEN_MAX 10
//#define LEN_MAX 100000
#define TODIGIT(a) a-'a'
char s1[LEN_MAX + 1];
char s2[LEN_MAX + 1];
int s1_cnt[26];
int s2_cnt[26];
int s1_memo[26];
int main() {
freopen("input.txt", "r", stdin);
int T;
scanf("%d", &T);
for (int tc = 1; tc <= T; tc++) {
scanf("%s %s", s1, s2);
for (int i = 0; i < 26; i++) {
s1_cnt[i] = 0;
s2_cnt[i] = 0;
}
int i = 0;
int cnt = 0;
int res = 0;
while (s1[i] != '\0') {
if (s1_cnt[TODIGIT(s1[i])] == 0) {
s1_memo[cnt] = TODIGIT(s1[i]);
cnt++;
}
s1_cnt[TODIGIT(s1[i])]++;
i++;
}
int s1_len = i;
for (int i = 0; i < s1_len; i++) {
s2_cnt[TODIGIT(s2[i])]++;
}
int j;
for (j = 0; j < cnt; j++) {
if (s1_cnt[s1_memo[j]] != s2_cnt[s1_memo[j]]) break;
}
if (j == cnt) res++;
int s = 0;
int e = s1_len;
while (s2[e]) {
//한 칸 이동
s2_cnt[TODIGIT(s2[s])]--;
s2_cnt[TODIGIT(s2[e])]++;
for (j = 0; j < cnt; j++) {
if (s1_cnt[s1_memo[j]] != s2_cnt[s1_memo[j]]) break;
}
if (j == cnt) res++;
s++;
e++;
}
printf("#%d %d\n", tc, res);
}
return 0;
}
댓글