#include <iostream>
#include <bits/stdc++.h>
#define maxn 27
#define inf 0x3f3f3f3f
using namespace std;
char letter[maxn];
int p[maxn];
int pos[maxn];
int f[maxn];
int main()
{
string s;
while(cin>>s&&s[0]!='#')
{
map<char,int>mp;
vector<int>u,v;
int len = s.size();
int idx = 0;
for(int i = 0;i<len;i++)
{
if(isalpha(s[i]))
{
if(!mp.count(s[i]))
{
mp[s[i]] = idx;
letter[idx++] = s[i];
}
}
}
sort(letter,letter+idx);
for(int i = 0;i<idx;i++)
{
mp[letter[i]] = i; //为每一个字母分配id
}
//
for(int i = 0;i<len;i++)
{
int t = i;
i+=2;
while(isalpha(s[i])&&i<len)
{
u.push_back(mp[s[t]]);
v.push_back(mp[s[i]]);
i++;
}
}
int ans = 0x3f3f3f3f;
for(int i = 0;i<idx;i++) p[i] = i;
do
{
int temp = 0;
for(int i = 0;i<idx;i++) pos[p[i]] = i;//代号的坐标
for(int i = 0;i<v.size();i++)//找两点之间的距离
{
temp = max(temp,abs(pos[v[i]]-pos[u[i]]));
if(temp>ans) break;
}
if(temp<ans)
{
ans = temp;
memcpy(f,p,sizeof(p));//复制
}
}while(next_permutation(p,p+idx));
for(int i = 0;i<idx;i++)
{
cout<<letter[f[i]]<<" ";
}
cout<<"-> "<<ans<<endl;
}
return 0;
}
/**
A:FB;B:GC;D:GC;F:AGH;E:HD
#
**/