Trie={}
def insert(Trie,s,n):
	my_try=Trie
	
	for i in range(n):
		if(s[i] in my_try):
			my_try=my_try[s[i]][0]
		else:
			my_try[s[i]]=[{},False]
			if(i==n-1):
				my_try[s[n-1]][1]=True
			my_try=my_try[s[i]][0]
	return(Trie)
	
def search(Trie,s,n):
	my_try=Trie
	for i in range(n):
		if(s[i] not in my_try):
			return(i)
		else:
			if(i==n-1):
				if(my_try[s[n-1]][1]==True or my_try[s[n-1]][1]==False ):
					return(-1)
		my_try=my_try[s[i]][0]
		
t=int(input())
pos=[]
neg=[]
count=0
for i in range(t):
	k=(input())
	if(k[0]=="-"):
		count=count+1
		neg.append(k[1:])
	else:
		pos.append(k[1:])
if(count==0):
	print(0)
elif(count==t):
	print(1)
	print('')
else:
	output=[]
	ans=0
	for i in pos:
		Trie=insert(Trie,i,len(i))
	for i in neg:
		val=search(Trie,i,len(i))
		if(val==-1):
			print(-1)
			ans=-1
			break
		else:
			output.append(i[:val+1])
	if(ans>=0):
		we=list(set(output))
		we.sort()
		print(len(we))
		for q in we:
			print(q)
			
