Only Premium Users can view the Question
void rangeSum(string &s,int i,unordered_set<string> &set,char prev)
{
if(i==s.size())
{set.insert(s);return;}
char curr=s[i]++;
rangeSum(s,i+1,set,curr);
if(i-1>=0)
{s[i]=prev-1;rangeSum(s,i+1,set,curr+1);s[i]=curr-1;}
if(i+1<s.size())
{s[i]=s[i+1]+1;rangeSum(s,i+1,set,curr-1);s[i]=curr+1;}
}
int rangeSum(string s)
{
unordered_set<string> set;
rangeSum(s,0,set,'z');
return set.size();
}