title: How to make next step of a string. C#
body: <p>The question is complicated but I will explain it in details.</p>
  
  <p>The goal is to make a function which will return next "step" of the given string.</p>
  
  <p>For example</p>
  
  <pre><code>String.Step("a"); //  = "b"
  String.Step("b"); //  = "c"
  String.Step("g"); //  = "h"
  String.Step("z"); // = "A"
  String.Step("A"); // = "B"
  String.Step("B"); // = "C"
  String.Step("G"); // = "H"
  </code></pre>
  
  <p>Until here its quite easy, But taking in mind that input IS string it can contain more than 1 characters and the function must behave like this.</p>
  
  <pre><code>String.Step("Z"); // = "aa";
  String.Step("aa"); // = "ab";
  String.Step("ag"); // = "ah";
  String.Step("az"); // = "aA";
  String.Step("aA"); // = "aB";
  String.Step("aZ"); // = "ba"; 
  String.Step("ZZ"); // = "aaa";
  </code></pre>
  
  <p>and so on...</p>
  
  <p>This doesn't exactly need to extend the base String class.</p>
  
  <p>I tried to work it out by each characters ASCII values but got stuck with strings containing 2 characters.</p>
  
  <p>I would really appreciate if someone can provide full code of the function.</p>
  
  <p>Thanks in advance. </p>
  
  <p><strong>EDIT</strong>
  *I'm sorry I forgot to mention earlier that the function "reparse" the self generated string when its length reaches <em>n</em>.</p>
  
  <pre><code>continuation of this function will be smth like this. for example n = 3
  String.Step("aaa"); // = "aab";
  String.Step("aaZ"); // = "aba";
  String.Step("aba"); // = "abb";
  String.Step("abb"); // = "abc";
  String.Step("abZ"); // = "aca";
  .....
  String.Step("zzZ"); // = "zAa";
  String.Step("zAa"); // = "zAb";
  ........
  </code></pre>
  
  <p>I'm sorry I didn't mention it earlier, after reading some answers I realised that the problem was in question.</p>
  
  <p>Without this the function will always produce character "a" <em>n</em> times after the end of the step.</p>