fork download
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. string shuffle (string &s1, string &s2) {
  5. string s;
  6. for (int i = 0; i < s1.length(); i++) {
  7. s += s2[i];
  8. s += s1[i];
  9. }
  10. s1 = s.substr(0, s1.length());
  11. s2 = s.substr(s2.length(), s2.length());
  12. return s;
  13. }
  14.  
  15. int main() {
  16. string s1, s2, s;
  17. int n;
  18. while (cin >> n && n) {
  19. cin >> s1 >> s2 >> s;
  20. string s12 = s1; s12 += s2;
  21. string fixS = s12;
  22. bool flag = true;
  23. int nofs = 0; // number of steps
  24. do {
  25. nofs++;
  26. s12 = shuffle(s1, s2);
  27. if (s == s12)
  28. flag = false;
  29. } while (s12 != fixS && flag && nofs <= 50);
  30. cout << (flag ? -1 : nofs) << endl;
  31. }
  32. return 0;
  33. }
Success #stdin #stdout 0s 15240KB
stdin
4
AHAH
HAHA
HHAAAAHH
3
CDE
CDE
EEDDCC
0
stdout
2
-1