#include <algorithm>
#include <numeric>
#include <iostream>
#include <vector>
bool stringsRearrangement(std::vector<std::string> v) {
sort(v.begin(), v.end());
int i,j,count=0;
do {
for(i=0;i<v.size()-1;i++) {
count=0;
for(j=0;j<v[0].size();j++)
if(v[i][j]!=v[i+1][j]) {
count++;
if(count==2)
break;
}
if(count!=1)
break;
}
if(i==v.size()-1 && j==v[0].size() && count==1)
return true;
} while(next_permutation(v.begin(),v.end()));
return false;
}
int main(int, char*[])
{
std::cout << stringsRearrangement({"aba", "bbb", "bab"}) << std::endl; // false
std::cout << stringsRearrangement({"a", "b", "c"}) << std::endl; // true
std::cout << stringsRearrangement({"a", "b", "c"}) << std::endl; // true
}
I2luY2x1ZGUgPGFsZ29yaXRobT4KI2luY2x1ZGUgPG51bWVyaWM+CiNpbmNsdWRlIDxpb3N0cmVhbT4KI2luY2x1ZGUgPHZlY3Rvcj4KCmJvb2wgc3RyaW5nc1JlYXJyYW5nZW1lbnQoc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IHYpIHsKICAgIHNvcnQodi5iZWdpbigpLCB2LmVuZCgpKTsKICAgIGludCBpLGosY291bnQ9MDsKICAgIGRvIHsKICAgICAgICBmb3IoaT0wO2k8di5zaXplKCktMTtpKyspIHsKICAgICAgICAgICAgY291bnQ9MDsgCiAgICAgICAgICAgIGZvcihqPTA7ajx2WzBdLnNpemUoKTtqKyspIAogICAgICAgICAgICAgICAgaWYodltpXVtqXSE9dltpKzFdW2pdKSB7CiAgICAgICAgICAgICAgICAgICAgY291bnQrKzsKICAgICAgICAgICAgICAgICAgICBpZihjb3VudD09MikKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIGlmKGNvdW50IT0xKSAKICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICB9CiAgICAgICAgaWYoaT09di5zaXplKCktMSAmJiBqPT12WzBdLnNpemUoKSAmJiBjb3VudD09MSkKICAgICAgICAgICAgcmV0dXJuIHRydWU7CgogICAgfSB3aGlsZShuZXh0X3Blcm11dGF0aW9uKHYuYmVnaW4oKSx2LmVuZCgpKSk7CgogICAgcmV0dXJuIGZhbHNlOwp9CgppbnQgbWFpbihpbnQsIGNoYXIqW10pCnsKICAgIHN0ZDo6Y291dCA8PCBzdHJpbmdzUmVhcnJhbmdlbWVudCh7ImFiYSIsICJiYmIiLCAiYmFiIn0pIDw8IHN0ZDo6ZW5kbDsgLy8gZmFsc2UKICAgIHN0ZDo6Y291dCA8PCBzdHJpbmdzUmVhcnJhbmdlbWVudCh7ImEiLCAiYiIsICJjIn0pIDw8IHN0ZDo6ZW5kbDsgLy8gdHJ1ZQogICAgc3RkOjpjb3V0IDw8IHN0cmluZ3NSZWFycmFuZ2VtZW50KHsiYSIsICJiIiwgImMifSkgPDwgc3RkOjplbmRsOyAvLyB0cnVlCn0K