Shuffle’m Up
POJ3087
#include<iostream>
#include<string>
#include<set>
using namespace std;
int flag, len, ans;
set<string> mySet;
void f(string s1, string s2, string s12) {
string s;
for (int i = 0; i < len; i++) {
s.append(1, s2[i]);
s.append(1, s1[i]);
}
ans++;
if (s.compare(s12) == 0) {
return;
}
if (mySet.count(s)) {
flag = -1;
return;
}
else {
mySet.insert(s);
}
string ns1, ns2;
for (int i = 0; i < len; i++) {
ns1.append(1, s[i]);
ns2.append(1, s[len + i]);
}
f(ns1, ns2, s12);
}
int main()
{
int t, cot = 1;
cin >> t;
while (t--) {
ans = 0, flag = 1;
string s1, s2, s12;
cin >> len;
cin >> s1 >> s2 >> s12;
f(s1, s2, s12);
mySet.clear();
if (flag == 1)
printf("%d %d\n", cot, ans);
else
printf("%d %d\n", cot, -1);
cot++;
}
return 0;
}