# [Japt](https://github.com/ETHproductions/japt) v1.4.5, <s>61</s> <s>59</s> <s>92</s> <s>85</s> <s>84</s> <s>70</s> <s>68</s> 52 bytes Assumes, as implied by the test cases, that the input will always be, or result in, a positive integer - i.e. not `0`. Outputs `false` for invalid string inputs containing at least one valid letter, throws an overflow error for all others. <pre><code> "OIREASGTBP" Ñ?UsV e"%v"²_ínuÃe"%V"²_íuu:U¶ßU=nV)©U</code></pre> [Try it](https://petershaggynoble.github.io/Japt-Interpreter/?v=1.4.5&code=CiJPSVJFQVNHVEJQIgrRP1VzViBlIiV2IrJf7W51w2UiJVYisl/tdXU6VbbfVT1uVimpVQ&input=Wwo1MTI0MzEgIlNJUkFORU5JIgo4MzQ2NzcwODEgIkJFTkFHVVRVVE9CSSIKMzE0MTU5MiAiRU5JTkFOSVNVUFVSIgoxMjM0NTY3ODkwICJJUkVOQVNVR1VUVUJVUE8iCjYxNjQ4MTcgIkdJR0FCSVQiCjYxNjQ3MzU3MzIgIkdJR0FURVNVVEVSIgo0MzEgIkFFSSIKXS1tUg) (Includes all test cases) --- - <s>2</s> 4 bytes saved thank to [obarakon](https://codegolf.stackexchange.com/users/61613/obarakon), who also convinced me to take this up again after I abandoned it earlier. I wish he hadn't! - <s>33</s> <s>26</s> <s>25</s> <s>23(!)</s> 7 bytes sacrificed to check input validity. --- ## Explanation We can avoid explicitly removing `N` & `U` before trying to convert a string to a number thanks to the way Japt's custom base conversion works. Unlike the native `parseInt` function which stops parsing when it encounters an invalid character and returns the result up to that point, when using a custom base invalid characters are ignored and parsing continues from the next valid character. \n"..."\nÑ?UsV e"%v"²_ínuÃe"%V"²_íuu:U¶ßU=nV)©U :Implicit input of integer or string U \n :Prevent input value of U from being overridden "..."\n :Assign the string "OIREASGTBP" to variable V Ñ :Multiply the input by 2 ? :If truthy (not NaN) UsV : Convert U to a string in custom base V e : Recursively replace all occurrences of "%v" : Literal "%v" ² : Duplicate, giving the Japt RegEx class for /[AEIUO][AEIOU]/g _ : Pass each match through the following function í : Interleave with n : Literal "n" u : Uppercase à : End replace e"%V"² : Recursively replace all occurrences of /[^AEIOU][^AEIOU]/g _ : Pass each match through the following function íuu : Interleave with "u" uppercased : :Else U¶ : Check U for equality with ß : Recursive call with argument U= : Reassign to U nV : Convert U from a base-V string to an integer ) : End recursive call ©U : Logical AND with U