Invalid Invali Inval
05AB1E, 10 8 bytes
.pžmâ€JR
Explanation
.p # get prefixes of input
žmâ # cartesian product with [9..0]
€J # join each
R # reverse
Try it online!
Saved 2 bytes thanks to Adnan
Javascript (ES6), 53 47 bytes
f=(s,n=0)=>s&&s+n+f(n-9?s:s.slice(0,-1),++n%10)
Saved 6 bytes thanks to Peanut & Neil
Output: all words as a single string with no separator.
Example
var f=(s,n=0)=>s&&s+n+f(n-9?s:s.slice(0,-1),++n%10)
document.getElementsByTagName('div')[0].innerHTML = f('INVALID')
<div style="word-wrap:break-word"></div>
Perl, 29 bytes
Includes +1 for -n
Run with input on STDIN:
perl -nE '/^.+(?{map{say$&.$_}0..9})^/' <<< PERL
Just the code:
/^.+(?{map{say$&.$_}0..9})^/