Lang:G++
Edit12345678910111213141516171819202122232425262728293031#include <iostream>#include <cstring>#include <algorithm>#include <unordered_map>#include <vector>using namespace std;const int N = 55;int n, inf = 0x3f3f3f3f;unordered_map<char, int> ma, mb, mc;vector<string> v;int cur[N][3], cnt[N];;int match(const char * a, const char * b) {int len = strlen(a);// cout << "len:" << len << endl;bool vis[N];memset(vis, 0, sizeof vis);int res = 0;ma.clear(), mb.clear();for (int i = 0; i < len; ++i) {ma[a[i]] = i;mb[b[i]] = i;}for (int i = 0; i < len; ++i) {if (a[i] == b[i]) continue;else if (vis[i]) continue;int j = i;while (b[j] != a[i]) {vis[j] = true;res++;j = ma[b[j]];