#include #include #include #include using namespace std; vector findKnuthMorrisPratt (string s, string t) { vector res; string r = s + "#" + t; int m = s.size (), len = r.size (); int k = -1; vector p; p.push_back (k); for (int i = 0; i < len; i++) { while (k >= 0 && r[i] != r[k]) k = p[k]; k += 1; if (k == m) res.push_back (i - m * 2 + 1); p.push_back (k); } return res; } int main () { string s, t; cin >> s >> t; vector res = findKnuthMorrisPratt (s, t); if (res.empty ()) cout << "none"; else copy (res.begin (), res.end (), ostream_iterator (cout, " ")); return 0; }