#include <bits/stdc++.h>
#define MOD 1000000007
#define mkp make_pair
typedef long long ll;
using namespace std;

int H,W;
char C[22][22];

map<int,pair<int,int>> mp;
int stx,sty;
vector<pair<int,int>> v;

int dist[12][22][22];
int dx[]={0,1,0,-1};
int dy[]={1,0,-1,0};

void bfs(){
    for(int i=0;i<=v.size();i++){
        for(int j=0;j<=H;j++){
            for(int k=0;k<=W;k++){
                dist[i][j][k]=MOD;
            }
        }
    }
    for(int i=0;i<v.size();i++){
        queue<pair<int,int>> Q;
        Q.push(v[i]);
        dist[i][v[i].first][v[i].second]=0;
        while(!Q.empty()){
            int x,y;
            tie(x,y)=Q.front();
            Q.pop();

            for(int j=0;j<4;j++){
                int nx=x+dx[j];
                int ny=y+dy[j];
                if(nx<0||ny<0||nx>=H||ny>=W) continue;
                if(C[nx][ny]=='x') continue;
                if(dist[i][nx][ny]<=dist[i][x][y]+1) continue;
                dist[i][nx][ny]=dist[i][x][y]+1;
                Q.push(mkp(nx,ny));
            }
        }
    }
}

void solve(){
    int cnt=1;
    mp.clear();
    v.clear();
    for(int i=0;i<H;i++){
        for(int j=0;j<W;j++){
            cin>>C[i][j];
            if(C[i][j]=='o'){
                stx=i;
                sty=j;
            }
        }
    }
    v.push_back(mkp(stx,sty));
    for(int i=0;i<H;i++){
        for(int j=0;j<W;j++){
            if(C[i][j]=='*'){
                mp[cnt]=mkp(i,j);
                cnt++;
                v.push_back(mkp(i,j));
            }
        }
    }

    bfs();

    vector<int> p(v.size()-1);
    iota(p.begin(),p.end(),1);
    int ans=MOD;
    do{
        int now=0;
        int res=0;
        for(int i=0;i<p.size();i++){
            int x=mp[p[i]].first;
            int y=mp[p[i]].second;
            if(dist[now][x][y]==MOD){
                res=MOD;
                break;
            }else res+=dist[now][x][y];
            now=p[i];
        }
        ans=min(ans,res);
    }while(next_permutation(p.begin(),p.end()));
    
    if(ans<MOD) cout<<ans<<endl;
    else cout<<-1<<endl;
}

int main(){
  while(1){
      cin>>W>>H;
      if(W==0) break;
      solve();
  }

  return 0;
}

