#include <string>
#include <iostream>
#include <vector>

using namespace std;

int main() {
	string sample = "aabaa";
	string text = "aabaabaaaabaabaaab";
	vector<size_t> prefix(sample.length());

	size_t last_prefix = prefix[0] = 0;
	for (size_t i=1; i<sample.length(); i++) {
		while (last_prefix > 0 && sample[last_prefix] != sample[i])
			last_prefix = prefix[last_prefix-1];
		
		if (sample[last_prefix] == sample[i])
			last_prefix++;
		
		prefix[i] = last_prefix;
	}
	
	last_prefix = 0;
	for (size_t i=0; i<text.length(); i++) {
		while (last_prefix > 0 && sample[last_prefix] != text[i])
			last_prefix = prefix[last_prefix-1];
			
		if (sample[last_prefix] == text[i])
			last_prefix++;
			
		if (last_prefix == sample.length()) {
			cout << i + 1 - sample.length() << endl;
		}
	}
}