C++ Simple Explanation
First thing to keep in mind is if the destination is (r,c) the string whose kth combination we have to find is made up of \'c\' number of H\'s and \'r\' number 
First thing to keep in mind is if the destination is (r,c) the string whose kth combination we have to find is made up of \'c\' number of H\'s and \'r\' number of V\'s.\n\n***Intuition***: Now to find the kth lexographical string in order made up of \'a\' H\'s and \'b\' V\'s, let\'s start by thinking what the first character in our string should be.\nFor that we need : \nNumber of strings starting with H i.e equal to ``` fact(a-1+b)/(fact(a-1)*fact(b)) which is equal to (a+b-1)Cb where C  stands for Combinations```.\n\nNow, if ```k <  x (where x = number of strings starting with H), our answer string should start with H. else our answer string should start with V and k = k-x.```\n\nHere is the code for reference.\n\n```\nclass Solution {\npublic:\n    string kthSmallestPath(vector<int>& destination, int k) {\n       \n        vector<vector<int>> vec(destination[0] + destination[1] + 1,vector<int>());  /// Vector to store the required nCr we need.\n        int n = destination[0] + destination[1];\n        vec[1].push_back(1);\n        vec[1].push_back(1);\n        for(int i = 2;i<=n;i++){\n            for(int j = 0; j<=vec[i-1].size();j++){\n                if(j == vec[i-1].size() || j == 0)\n                    vec[i].push_back(1);\n                else vec[i].push_back(vec[i-1][j-1] + vec[i-1][j]);\n            }\n        }  \n        string ans;\n        int a = destination[1];\n        int b = destination[0];\n        while( k > 0){\n            int x = vec[a-1+b][b];  /// x is the number of strings starting with \'H\'.\n\t\t\t\n\t\t\tif(k <= x){    \n                ans += \'H\';\n                a--;\n\t\t\t\tif(k == x)\n\t\t\t\t\tk-=x;\n\t\t\t}\n            else if(k > x){\n                ans += \'V\';\n                k -= x;\n                b--;\n            }\n            if(a == 0 || b == 0){   /// if at any point either a or b == 0, we should break;\n                break;\n            }\n        }\n  \n        for(int i = 0;i<b;i++)    /// add remaining V\'s\n            ans += \'V\';\n        for(int i = 0;i<a;i++)   /// add remaining H\'s\n             ans += \'H\';\n        return ans;      \n    }\n};\n```\n
[]