Recursion subsequence - Wrong answer

#include
#include
#include
using namespace std;

string convertToString(char* a, int size)
{
int i;
string s = “”;
for (i = 0; i < size; i++) {
s = s + a[i];
}
return s;
}

void subsequences(char *inp, char *out, int i, int j, vector &v)
{
if(inp[i] == ‘\0’)
{
out[j] = ‘\0’;
string s = convertToString(out, strlen(out));
//cout<<out<<" ";
v.push_back(s);
return;
}

out[j] = inp[i];
subsequences(inp, out, i+1, j+1, v);
subsequences(inp, out, i+1, j, v);

return;

}
int main() {
char input[100];
char out[100];

cin>>input;
int strl = strlen(input);

vector<string> v;

//cout<<"  ";
subsequences(input, out, 0, 0, v);

for(int i = v.size()-1; i>=0; i--)
{
    cout<<v[i]<<" ";
}

cout<<endl<<strlen(input)*strlen(input);

return 0;

}

It is passing only one test case.

@abhishekchoudhary at last just print v.size() instead of multiplying input sizes.