Помощник написания кода на С++

7. Продолжение автоматов

#include<iostream>
#include<map>
#include<string>

using namespace std;


int pust(int x, string& str);
int a(int x, string& str);
int ab(int x, string& str);
int abc(int x, string& str);
int abca(int x, string& str);
int abcab(int x, string& str);
int abcabb(int x, string& str);

int pust(int x, string& str) {
    if(x >= str.size()) {
        return -1;
    }
    if(str[x] == 'a') {
        return a(x+1, str);
    }
    return pust(x+1, str);
}
int a(int x, string& str) {
    if(x >= str.size()) {
        return -1;
    }
    if(str[x] == 'b') {
        return ab(x+1, str);
    }
    if(str[x] == 'a') {
        return a(x+1, str);
    }
    return pust(x+1,str);
}

int abcabb(int x, str) {
    return x - 5;
}

int main() {
    string input;
    cin >> input;
    int x = 0;
}