#include using namespace std; typedef long long ll; #define rep(i,n) for(i=0;i>s; //n文字になったら入れる set ans; //スタート string st=""; //残り string r=s; //BFS queue< pair > que; que.push(mp(st,r)); while(!que.empty()){ pair v=que.front(); que.pop(); int len=v.sc.size(); if(len==1) ans.insert(v.fi+v.sc); else{ string a,b; //先頭から取ってくる a=v.fi+v.sc[0]; b=v.sc.substr(1,len-1); que.push(mp(a,b)); //末尾から取ってくる a=v.fi+v.sc[len-1]; b=v.sc.substr(0,len-1); que.push(mp(a,b)); } } std::cout << ans.size() << std::endl; return 0; }