#include<bits/stdc++.h>
using namespace std;
typedef pair<int,int> p;
typedef pair<int,p> P;

int w,h,used[1<<10][20][20],bt[20][20];;
char c[20][20];
int dx[4]={-1,0,1,0},dy[4]={0,1,0,-1};
int sx,sy,n;
int bfs(){
  memset(used,0,sizeof(used));
  queue<P> q;
  q.push(P(0,p(sx,sy)));
  while(!q.empty()){
    int s=q.front().first,x=q.front().second.first,y=q.front().second.second;
    q.pop();
    if(s==n-1)return used[s][y][x];
    for(int i=0;i<4;i++){
      int nx=x+dx[i],ny=y+dy[i];
      if(nx<0||w<=nx||ny<0||h<=ny||c[ny][nx]=='x')continue;
      int ns=s|bt[ny][nx];
      if(!used[ns][ny][nx])
	q.push(P(ns,p(nx,ny))),used[ns][ny][nx]=used[s][y][x]+1;
    }
  }
  return -1;
}

int ans(){
  memset(used,0,sizeof(used));
  memset(bt,0,sizeof(bt));
  n=1;
  for(int i=0;i<h;i++)
    for(int j=0;j<w;j++){
      cin>>c[i][j];
      if(c[i][j]=='o')sx=j,sy=i;
      if(c[i][j]=='*')bt[i][j]=n,n*=2;
    }
  return bfs();
}

int main(){
  while(cin>>w>>h,w)cout<<ans()<<endl;
  return 0;
}