#include <iostream>
using namespace std;
const string alphabet[27] = { "", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m",
"n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z" };
int
s, t, w, cnt = 1;
string origin;
void
__read__()
{
cin >> s >> t >> w >> origin;
}
bool
flg( string num, int digit )
{
for( int i = 1; i <= digit; i++ )
{
if( num[i - 1] < origin[i - 1] )
return false;
if( num[i - 1] > origin[i - 1] )
return true;
}
return false;
}
void
__dfs__( int digit, int start, string num )
{
if( digit <= w )
for( int i = start + 1; i <= t; i++ )
if( flg( num, digit ) )
__dfs__( digit + 1, i, num + alphabet[i] );
else if( i >= origin[digit - 1] - 'a' + 1 )
__dfs__( digit + 1, i, num + alphabet[i] );
if( digit > w )
{
if( cnt > 1 && cnt <= 6)
cout << num << endl;
else if ( cnt > 6 )
exit( 0 );
cnt++;
}
}
int
main()
{
__read__();
__dfs__( 1, s - 1, "" );
return 0;
}