def smartsort(names):
	"""
	Sort a list of names. It will check for:
	- Alphabetical order (a, b, c)
	- Numeric order (1, 2, 3)
	- Specified order (b {0}, c {1}, a {2})
	"""
	
	def curly(string):
		"Extract the string inside the curly brackets."
		return string[string.index('{')+1:string.index('}')]
	
	def isnum(string):
		"Is this string a number?"
		return string.replace('-', '', 1).isdigit()
	
	numbers, specified, words = [], [], []
	for name in names:
		*dir, name, end = name.split('/') 
		if isnum(name.split(' ')[-1]):
			numbers.append(name)
		elif '{' in name and isnum(curly(name)):
			specified.append(name)
		else:
			words.append(name)
	numbers.sort(key=lambda x: int(x.split(' ')[-1]))
	specified.sort(key=lambda x: int(curly(x)))
	words.sort();
	specified = [word[:word.index('{')-1] for word in specified
			  if int(curly(word))>0]
	return specified + numbers + words