请问这个怎么改能够让他不Time limit exceeded

#include<stdio.h>
int answer(char a[], char b[], int m, int n) {
int i, j, k, number = 0;
if (n == 1) {
for (i = 0; i < m; i++) {
if (b[0] == a[i]) {
number++;
}
}
return number;
}
else if (n == 2) {
i = 0;
for (; i < m;i++)
{
if (b[0] == a[i]) {
j = i + 1;
for (; j < m; j++) {
if (b[1] == a[j]) {
number++;
}
}
}
}return number;
}
else {
i = 0;
for (; i < m; i++)
{
if (b[0] == a[i]) {
j = i + 1;
for (; j < m; j++) {
if (b[1] == a[j]) {
k = j + 1;
for (; k < m; k++) {
if (b[2] == a[k]) {
number++;
}
}
}
}
}
}return number;
}
}
int main() {
int m, n, sum = 0; char ch;
char a[100000], b[5];
scanf("%d %d", &m, &n);
scanf("%s",a);
ch=getchar();
scanf("%s", b);
sum=answer(a,b,m,n);
printf("%d\n", sum);
return 0;
}